PDA

View Full Version : یه مشکل در کار با ClientDataSet



FirstLine
چهارشنبه 07 فروردین 1387, 23:00 عصر
با سلام
برای کار کردن با یک دیتابیس خیلی بزرگ و استفاده از ClientDataSet
یه پروژه جدید ایجاد کردم و کارهای زیر را انجام دادم:
ADOConnection1 را به دیتابیس وصل کردم
یه DataSet Provider بذار رو فرمت
خاصیت Dataset از DataSetProvider رو بذار Query1
خاصیت ProviderName از ClientDataSet رو بذار DataSetProvider1
خاصیت DataSet از DataSource رو بذار ClientDataSet1
یه دیتا سورس هم به ClientDataSet وصل کردم و پس از حدود چند دقیقه تمام اطلاعات را بدرستی در ClientDataSet لوود و در dbgrid1 نمایش میدهد.

حالا میخوام یه AdoQuery با یه select جدید یک سری اطلاعات را از این ClientDataSet بر اساس کوری جدید خوانده و در یک dbgrid2 جدید نمایش داده

شود.
حالا این AdoQuery که حاوی کوری جدید است را به کجا وصل کنم؟
نمیخوام اطلاعات را مجدد از دیتابیس بخونه.
با تشکر

Cave_Man
پنج شنبه 08 فروردین 1387, 01:31 صبح
راهی که من به ذهنم میرسه اینه که اطلاعات ClientDataSet اول رو در یک فایل ذخیره کنید و اطلاعات اون فایل رو در ClientDataSet دوم لود کنید و ClientDataSet دوم رو فیلتر کنید تا اطلاعات مورد نظر شما حاصل بشه
برای ذخیره اطلاعات و لود اطلاعات هم ClientDataSet متدی ارائه کرده که الان اسمش یادم نیست توی متد هاش بگردید سریع پیداش میکنید

vcldeveloper
پنج شنبه 08 فروردین 1387, 03:26 صبح
حالا میخوام یه AdoQuery با یه select جدید یک سری اطلاعات را از این ClientDataSet بر اساس کوری جدید خوانده و در یک dbgrid2 جدید نمایش داده شود.
حالا این AdoQuery که حاوی کوری جدید است را به کجا وصل کنم؟
این یعنی متوجه کارکرد ClientDataSet نشدید! احتمالا جایی کسی توصیه کرده که برای فلان کار باید از ClientDataSet استفاده بشه، شما هم همون رو گرفتید و رفتید سراغ ClientDataSet.
دقیقتر بگید که چه نوع پروژه ایی دارید و قرار هست چه کارهایی در آن انجام بشه، و چرا به این نتیجه رسیدید که باید از DatsetProvider و ClientDataSet استفاده کنید.
در ضمن، درباره ClientDataSet هم مطالعه و تحقیق کنید.

FirstLine
پنج شنبه 08 فروردین 1387, 07:56 صبح
با سلام
یه برنامه فقط برای نمایش اطلاعات بکار میرود و دیتابیس آن DBISAM است. حداقل 6 جدول و تعداد رکوردها هم زیاد است. و بر روی همه فیلدها هم جستجو انجام میشه، هم فیلد تاریخ بصورت String فارسی، هم عددی و هم String.
برای خواندن اطلاعات و جستجو از Query استفاده میکنم و در زمان جستجو یا نمایش اطلاعات و با نوشتن یه Select جدید اطلاعات را از بانک اطلاعاتی نمایش میدهم.
البته سرعت د خیلی اهمیت دارد.
این روش واکشی اطلاعات در هر دفعه ه کندی انجام میشود برای همین دوستان پیشنهاد استفاده از clientdataset را دادند و الان من میخوام که در هنگام اجرای برنامه همه اطلاعات موجود در بانک اطلاعاتی را لوود کرده و سپس در هر جای برنامه که نیاز به استفاده از این اطلاعات بود یک کوری نوشته و رکوردهای خاصی که مورد نظر هست را نمایش دهم و نیازی نباشد که هر دفعه به بانک اصلی رجوع شود.
من در ابتدای اجرای برنامه همه اطلاعات را در clientdataset لوود میکنم، تا اینجا همه چیز درسته.
حالا مثلا 4 تا دکمه روی فرمم دارم که میخوام با زدن هر کدوم از دکمه ها بر اساس یه شرط و کوری یک سری اطلاعات از همون clientdataset را در یک گرید نمایش دهد.
این قسمت رو نمیدونم چکار کنم؟
لطفا راهنمایی بفرمایید.
با تشکر