PDA

View Full Version : کمک خیلی فوری لطفا !!!!! DBGRID



devil00x
شنبه 13 اسفند 1384, 00:57 صبح
آقا من یه مشکلی دارم ، لطفا اگه کسی می تونه ، کمک کنه
من می خوام کاربرم اطلاعات رو تو DBGRID که تغییر می ده ثبت جدول نشه تا موقعی که خودم بهش اجازه ندادم ،
باید چی کار کنم هر کاری به نظرم رسیده انجام دادم ولی جواب نگرفتم ، لطفا راهنمایی کنید ...
با تشکر

VouDou_ir
شنبه 13 اسفند 1384, 01:55 صبح
نمی دونم میخوای چیکار کنی با جزئیات بیشتری بگی شاید بشه کمک کرد
در اینگونه موارد از Temp Table استفاده میکنند مثلا میتونید با استفاده از یک Memory Table و قرار دادن اطلاعات اصلی داخل MT ه DBGrid را از MT بخوانید ! و بعد از اتمام تغییرات با اجازه شما ثبت شود :)

vcldeveloper
شنبه 13 اسفند 1384, 03:15 صبح
اگه از ADO استفاده می کنید، خصوصیت LockType را بر روی ltBatchOptimistic تنظیم کنید و هر بار که خواستید تغییرات ثبت بشند از متد UpdateBatch استفاده بکنید.
برای سایر DataSet ها می تونید از ترکیب DataSetProvider و ClientDataSet استفاده کنید و برای ثبت تغییرات از متد ApplyUpdates از ClientDataSet استفاده بکنید.

* هر دو مورد فوق قبلا توضیح داده شده .

mzjahromi
شنبه 13 اسفند 1384, 09:01 صبح
آقا من یه مشکلی دارم ، لطفا اگه کسی می تونه ، کمک کنه
من می خوام کاربرم اطلاعات رو تو DBGRID که تغییر می ده ثبت جدول نشه تا موقعی که خودم بهش اجازه ندادم ،
باید چی کار کنم هر کاری به نظرم رسیده انجام دادم ولی جواب نگرفتم ، لطفا راهنمایی کنید ...
با تشکر

اگر هم از BDE استفاده می کنید خاصیت Cached Update رو True کنید. و در انتها از ApplyUpdate استفاده کنید.
می تونید هم از یه جدول موقت استفاده کنید. (تا اونجا که من تست کردم این روش سرعت بهتری داره)

devil00x
شنبه 13 اسفند 1384, 11:27 صبح
اگه از ADO استفاده می کنید، خصوصیت LockType را بر روی ltBatchOptimistic تنظیم کنید و هر بار که خواستید تغییرات ثبت بشند از متد UpdateBatch استفاده بکنید.
برای سایر DataSet ها می تونید از ترکیب DataSetProvider و ClientDataSet استفاده کنید و برای ثبت تغییرات از متد ApplyUpdates از ClientDataSet استفاده بکنید.

* هر دو مورد فوق قبلا توضیح داده شده .
آقا لطف کردی ، خیلی ممنون .
جواب گرفتم ، خیلی حال دادی داداش......

Developer Programmer
دوشنبه 05 فروردین 1387, 08:11 صبح
اگه از ADO استفاده می کنید، خصوصیت LockType را بر روی ltBatchOptimistic تنظیم کنید و هر بار که خواستید تغییرات ثبت بشند از متد UpdateBatch استفاده بکنید.
کارفرما اصرار داشت که نباید فورا اطلاعات داخل db ریخته بشه و من بیچاره هرکاری میکردم نمی تونستم dbGrid رو رام کنم !!! واسه همین یک روز تمام داشتم خصوصیتهای String Grid رو مطالعه میکردم.
کارم رو راحت کردی علی جون ... جدا دمت گرم!

dkhatibi
دوشنبه 05 فروردین 1387, 08:55 صبح
می تونید هم از یه جدول موقت استفاده کنید. (تا اونجا که من تست کردم این روش سرعت بهتری داره)
با سلام و عرض تبریک سال نو
این جداول موقت رو سرور ایجاد باید بشن یا کلاینت؟
اگر کلاینت هست چه جوری می شه؟
اگر سرور هست چه جوری باهاش کلاینتها را متمایز کنیم.

vcldeveloper
دوشنبه 05 فروردین 1387, 12:16 عصر
این جداول موقت رو سرور ایجاد باید بشن یا کلاینت؟در سمت Client میشه همون چیزی که برای UpdateBatch و ApplyUpdate توضیح داده شد.
در سمت سرور بستگی به نوع بانک داره، مثلا SQL Server همچین امکانی رو بهتون میده که جدولی رو بصورت موقت ایجاد کنید و هر زمان بهش نیاز نداشتید حذفش کنید. اگر هم خودتون حذفن نکنید، چون جدول موقت هست، با پایان یافتن Session بصورت خودکار حذف میشه. این جدول ها در سمت سرور می تونند برای هر کاربر بطور مجزا قابل دسترس باشند، یا اینکه بصورت Global معرفی بشند تا جدول موقت ساخته شده توسط یک کاربر توسط سایر کاربران هم قابل دسترس باشه.
مشکل این روش در مقایسه با Batch Update اینه که هر تغییری کاربر روی داده ها بده، باید تغییر مربوطه از طریق شبکه به سرور ارسال بشه و توسط سرور در جدول موقت ثبت بشه، و زمانی که تغییرات بطور کامل ثبت شدند، داده های جدول موقت در جدول اصلی نوشته بشند؛ یعنی ترافیک شبکه اجتناب ناپذیر هست. در حالی که در Batch update تا زمانی که متد مربوط به ثبت کل تغییرات فراخوانی نشه، عملا نیازی به اتصال به سرور نیست.در نتیجه اتصالات همزمان به سرور و ترافیک شبکه خیلی کاهش پیدا میکنه.