PDA

View Full Version : تاخیر Post شدن در یک کوئری یا جدول



dkhatibi
سه شنبه 11 دی 1386, 12:25 عصر
لازم است تعدادی از اطلاعات یک کوئری یا جدول پیش از پست شدن ابتدا تغییر یافته و در موقع پست شدن شرایط مورد نیاز چک شود تا در صورت تداخل مانع از پست شدن گردد چه کار باید کرد؟

hr110
سه شنبه 11 دی 1386, 12:28 عصر
قبل از استفاده از دستور POST چکینگ را انجام دهید و اگر شرایط حاصل نشده بود از دستور Abort استفاده کنید و در غیر اینصورت POST را فراخوانی کنید.

a_b_toops
سه شنبه 11 دی 1386, 14:57 عصر
بستگی به نوع بانک اطلاعاتی که شما استفاده می کنید دارد شما در صورت استفاده از بانک اطلاعتی Sql server شما می توانید برای بالا رفتن سرعت کار روند ورود خروج را با استفاده از یک Stored procedure کنترل کنید و در صورت بر قرار نبودن این شرایط ثبت داده ها انجام نشود فکر کنم با این کار سرعت شما در Post کردن اطلاعات بالا برود

SYNDROME
سه شنبه 11 دی 1386, 15:19 عصر
لازم است تعدادی از اطلاعات یک کوئری یا جدول پیش از پست شدن ابتدا تغییر یافته و در موقع پست شدن شرایط مورد نیاز چک شود تا در صورت تداخل مانع از پست شدن گردد چه کار باید کرد؟
دقیقاً می خواهید چه کار بکنید؟
آیا به خاطر Insert چند کاربر می خواهید قبل از Post شدن چک کنید و یا دلیل دیگری دارید.
اگر به خاطر هم زمانی است می توانید با SP و یا Tbl مورد نظر را برای یک کاربر قفل کنید و بعد از پایان کار کاربر فوق tbl را از حالت Lock خارج کنید.
موفق باشید

dkhatibi
سه شنبه 11 دی 1386, 19:29 عصر
کاری که می خوام انجام بدم ی چیز دیگه هست.
کابر باید یک سری از رکوردها را دستکاری کنه. مثلا ممکنه یک قفیلد Identity را تغییر بده. این فیلد در این لحضه دااری دو مقدار یکسان می باشه. اما کاربر رکورد دیگه ای رو بعدا تغییر خواهد داد تا این فیلد با به صورت همان در اد. بعد از اعمال این تغییرات کاربر باید ذخیره سازی رو انجام بده و در صورت پیش اومدن اشتباه در تکرار داده باید برنامه خطای مناسبی را براش صادر کنه تا کاربر اونو اصلاح کنه تا فیلد به صورت همانب دراد.

SYNDROME
سه شنبه 11 دی 1386, 20:54 عصر
کاری که می خوام انجام بدم ی چیز دیگه هست.
کابر باید یک سری از رکوردها را دستکاری کنه. مثلا ممکنه یک قفیلد Identity را تغییر بده. این فیلد در این لحضه دااری دو مقدار یکسان می باشه. اما کاربر رکورد دیگه ای رو بعدا تغییر خواهد داد تا این فیلد با به صورت همان در اد. بعد از اعمال این تغییرات کاربر باید ذخیره سازی رو انجام بده و در صورت پیش اومدن اشتباه در تکرار داده باید برنامه خطای مناسبی را براش صادر کنه تا کاربر اونو اصلاح کنه تا فیلد به صورت همانب دراد.
می توانید اطلاعاتی را که کاربر کار می کند در یک جدول موقت واکشی کنید و در زمانی که می خواهید ذخیره کنید با استفاده از Having چک کنید ببینید آیا اطلاعات تکراری زده شده است یا نه
.اگر نبود آن وقت اطلاعات را به جدول اصلی انتقال دهید.
موفق باشید

dkhatibi
چهارشنبه 12 دی 1386, 17:40 عصر
جدول موقت روی بانک. در این صورت کاربر دیگر هم می تونه اطلاعات اونو دسنکاری کنه و ممکنه تداحل پیش بیاد.
استفاده از Group By روی فیلد منظورتونه؟!

SYNDROME
چهارشنبه 12 دی 1386, 18:46 عصر
جدول موقت روی بانک. در این صورت کاربر دیگر هم می تونه اطلاعات اونو دسنکاری کنه و ممکنه تداحل پیش بیاد.
استفاده از Group By روی فیلد منظورتونه؟!
می توانید با استفاده از یک مشخصه مثل نام کاربری از این تداخل جلوگیری کنید.
رکوردهایی که کاربر X دارید دستکاری می کند و داخل جدول موقت است را اجازه نمی دهید کاربران دیگر به این جدول انتقال دهند.
موفق باشید

Ahmad_Crack
چهارشنبه 12 دی 1386, 20:22 عصر
باید قبل از عمل کنترل تکراری بودن دادها برنامه را در حالت ترنزکشن قرار داده
بعد از عمل پست اطلاعات داده را مجدادا برای تکرار کنترل
در حالت درست بودن عمل کامیت را انجام دهی
Begintrans
Check
Post
Check ----> اگر در این مرحله تکراری بود اطلاعات به معنی این است که هر دو پست همزمان رخ داده است و باید اطلاعت Rollback شود
Commit

merced
چهارشنبه 12 دی 1386, 20:25 عصر
جدول موقت روی بانک. در این صورت کاربر دیگر هم می تونه اطلاعات اونو دسنکاری کنه و ممکنه تداحل پیش بیاد.
استفاده از Group By روی فیلد منظورتونه؟!



جدول موقت برای هر کاربری رو کلاینت خودش مثل یک فایل Xml که بعدا قرار است درجدول اصلی بانک اطلاعاتی اعمال شود

dkhatibi
چهارشنبه 12 دی 1386, 21:09 عصر
جدول موقت برای هر کاربری رو کلاینت خودش مثل یک فایل Xml که بعدا قرار است درجدول اصلی بانک اطلاعاتی اعمال شود
چه جوری ایجادش کنم.
من فعلا چیری شبیه به این رو با StringGrid انجام می دم اما کار یک کم سخته.