PDA

View Full Version : به روز رساني كوئري



mohsen_r
سه شنبه 29 مرداد 1387, 08:51 صبح
سلام من چطور مي تونم يه كوئري را بدون فعال و غير فعال كردن اكتيو qry.active:=false به روز رساني كنم

چون كوئري من خيلي بزرگ هست و وقت گير مي باشد و براي گزارش بايد كوئري را باز بسته كنم
البته از qry.updaterecordهم استفاده كردم البته جواب نداد

Borland-Delphi7
سه شنبه 29 مرداد 1387, 09:11 صبح
به نظر من از clientdataset استفاده کن این مشکل رو حل کرده و هر وقت که بخوای میتونی refresh کنی بدون open close یا به قول شما active =True or False در غیر این صورت باید Query را محدود کنی یعنی بگی تو یک رنج خاص گزارش بده اما اگر میخواهی گزارش از کل جدول بگیری با همین روش AdoQuery باید یک Progressbar واسه کاربر بزاری تا حوسلش سر نره پیشنهاد من اینه که در پروژه هات از clientdataset و dbexpress استفاده کنی چون مزایای زیادی نسبت به ADO داره

mohsen_r
سه شنبه 29 مرداد 1387, 09:18 صبح
از كل كوئري كه نيست تغييراتي دريك جدول ثبت ميشه ويك ركورد از كوئري به نمايش در مي آيد يك splash واسه كاربر گذاشتم كه متوجه وقفه بشه
از clientdataset تا حالا استفاده نكردم مزاياش چيه و يك نمونه مثال بزنيد

mohsen_r
سه شنبه 29 مرداد 1387, 09:28 صبح
البته من از access استفاده مي كنم

Touska
سه شنبه 29 مرداد 1387, 09:39 صبح
اگر شما با Ado به فایل Access خود وصل شده اید ، کافیه از متد Refresh یا Requery برای بازخوانی اطلاعات

استفاده نمایید.

موفق باشید :)

mohsen_r
سه شنبه 29 مرداد 1387, 10:21 صبح
requery از نظر زمان وقت گير مثل همون حالت كه در اول گفتم
refresh هم كه خطا ميگره كه تست نشده
خطا
in sufficient key column information fo updating or refreshing

delphiprog3000
سه شنبه 29 مرداد 1387, 10:45 صبح
با سلام.

دوست من این خطا مربوط به فیلد کلید میباشد.

آیا شما برای فیلدتون Primary key تعریف کرده اید؟

mohsen_r
سه شنبه 29 مرداد 1387, 11:02 صبح
خير من هيچوقت از Primary key استفاده نمي كنم

AlirezaBahredar
سه شنبه 29 مرداد 1387, 11:14 صبح
http://dn.codegear.com/article/28876

delphiprog3000
سه شنبه 29 مرداد 1387, 11:43 صبح
دوست من خطایی که میده . مربوط به فیلد کلید میباشد.

برای هر update نیاز به فیلد کلید میباشد.

یادم در Clientdataset ها نیز یکبار به این مشکل برخوردم که با تعریف فیلد کلید برای جدول مشکل حل شد.

موفق باشید.................

mohsen_r
سه شنبه 29 مرداد 1387, 12:30 عصر
آخه من تو كوئري كجا بايد فيلد كليد تعريف كنم

Borland-Delphi7
سه شنبه 29 مرداد 1387, 13:58 عصر
از tab -dataaccess دو کنترل clientdataset و datasetprovider بزار رو فرم dataset مربوط به dataset provider1 رو بزار adoquery1 و providername مربوط به clientdataset1 رو بزار datasetprovider1 حالا dataset کنترل دیتاستت رو به جای adoquery1 وصل کن به clientdataset1 بعد با clientdataset1 مثل adoquery1 رفتار کن منظورم همون درج و غیره است هرگاه خاصتی رفرش کنی clientdataset1.refresh رو بزن توجه کن که بعد از هر تغییراتی باید clientdataset1 رو ClientDataSet1.ApplyUpdates(0) بزنی

delphiprog3000
یک شنبه 17 شهریور 1387, 12:35 عصر
آخه من تو كوئري كجا بايد فيلد كليد تعريف كنم

دوست عزیز منظور تعریف فیلد کلید برای جدولتان در دیتابیس بود.

از کلاینت دیتاست ها نیز میتونید همنوظور که دوستمون گفت استفاده کنید.

موفق باشید..........