ورود

View Full Version : ساخت query از حافظه



aradsystem
جمعه 15 آبان 1388, 13:44 عصر
با سلام به دوستان.

چطوري ميشه از يك كوئري كه چند تا ركورد از جدول بيرون اورده يه كوئري ديگه ساخت؟
منظورم select تو در تو نيست. فرض كنيد من با يك كوئري 10 تا ركورد اوردم توي حافظه يا Temp. حالا مي خوام از همون 10 تا ركورد كه توي Temp هست يه كوئري بگيرم.

با تشكر.

merced
جمعه 15 آبان 1388, 15:14 عصر
اين ميشه همون فيلتر

AdoQuery1.Filter := ****
AdoQuery1.Filtered := True;

aradsystem
شنبه 16 آبان 1388, 13:09 عصر
اين ميشه همون فيلتر

AdoQuery1.Filter := ****
AdoQuery1.Filtered := True;


نه دوست عزیز به فیلتر و خود رکورد ها نیاز ندارم. می خوام مجموع مقادیر کل اون 10 تا فیلد خاص رو در بیارم. خوب با فیلتر باز باید حلقه بنویسم. میخوام با کوئری این کار رو بکنم.

merced
شنبه 16 آبان 1388, 18:40 عصر
اگه از ClientDataset‌ استفاده مي كني مي توني از aggregate ها استفاده كني

aradsystem
شنبه 16 آبان 1388, 18:49 عصر
نه من از adoquery استفاده میکنم. راهی نیست که از رکورد های adoquery دوباره کوئری گرفت؟

vcldeveloper
شنبه 16 آبان 1388, 23:29 عصر
نه من از adoquery استفاده میکنم. راهی نیست که از رکورد های adoquery دوباره کوئری گرفت؟
فایدش چی هست؟ محتوای شما از قبل در حافظه بارگزاری شده، و حرکت بین رکوردهای آن توسط یک حلقه از نظر سربار چندان تفاوتی با نوشتن یک کوئری که بر روی داده های موجود در حافظه اعمال بشه، نداره.

aradsystem
یک شنبه 17 آبان 1388, 10:23 صبح
یعنی وقتی که با یک کوئری جمع مقادیر عددی یک فیلد رو محاسبه می کنیم با این که با یک حلقه رکورد به رکورد جلو بریم و فیلد ها رو با هم جمع کنیم توی سرعت اجرا فرقی نداره؟ حالا فرض کنیم هزار تا رکورد باشه.

merced
یک شنبه 17 آبان 1388, 14:51 عصر
یعنی وقتی که با یک کوئری جمع مقادیر عددی یک فیلد رو محاسبه می کنیم با این که با یک حلقه رکورد به رکورد جلو بریم و فیلد ها رو با هم جمع کنیم توی سرعت اجرا فرقی نداره؟ حالا فرض کنیم هزار تا رکورد باشه.
اگه ADOQuery ‌شما به كامپوننت هاي DataAware‌ (به Datassource) وصل نباشه نه آنچنان

vcldeveloper
یک شنبه 17 آبان 1388, 15:28 عصر
یعنی وقتی که با یک کوئری جمع مقادیر عددی یک فیلد رو محاسبه می کنیم با این که با یک حلقه رکورد به رکورد جلو بریم و فیلد ها رو با هم جمع کنیم توی سرعت اجرا فرقی نداره؟ حالا فرض کنیم هزار تا رکورد باشه
وقتی داده ها از قبل در حافظه هستند، فرق چندانی نداره.


اگه ADOQuery ‌شما به كامپوننت هاي DataAware‌ (به Datassource) وصل نباشه نه آنچنان
البته اگر هم به کامپوننت های Data-aware وصل باشه، با استفاده از متدهای DisableControls و EnableControls میشه جلوی آپدیت شدن این کنترل ها در زمان پیمایش Dataset را گرفت، تا موجب کاهش سرعت حرکت بر روی رکوردها نشوند.