PDA

View Full Version : سوال: مدیریت کوئری کراستب به استفاده از فرم



Mehr@ban
جمعه 06 بهمن 1396, 15:07 عصر
سلام

اطلاعاتی رو با استفاده از کوئری کراستب از جداول مورد نظرم استخراج کردم
ولی به دلیل حجم بالایی که برای پردازش اطلاعات بر روی سیستم اعمال میکنه قصد دارم تا این کوئری رو با استفاده از مقداری که در یک کمبوباکس در فرمی، به نوعی فیلتر کنم تا داده خاص رو استخراج کنم که علاوه بر اجرای سریعتر کوئری، نتیجه مد نظر کاربر رو هم اعمال کنه.

توضیح مختصری در مورد اطلاعات واکشی شده:
در این کوئری تعداد تراکنش های ثبت شده توسط کاربران رو در تمامی تاریخ ها میشماره که قطعا حجم اطلاعات زیادی رو شامل میشه و نیاز به پردازش زیادی هست که با یک سیستم i5 و Ram 4GB حدود یک دقیقه نیاز به پردازش داره که زمان زیادی هست.

حالا اگر بشه تاریخ رو از طریق یک تکست باکس یا کمبوباکس بر روی کراستب اعمال کرد عالی میشه.


البته لازمه اشاره کنم که این قابلیت رو به همان صورتی که در کوئری سلکت انجام میشه پیاده کردم ولی خطا داد و حتی با استفاده از یک کوئری سلکت واسطه هم اقدام کردم ولی بازم همون خطا رو گرفتم



حالا دوستان راه حل یا نمونه ای برای این کار دارن؟

mazoolagh
یک شنبه 08 بهمن 1396, 12:28 عصر
میدونین که ندیده نمیشه پاسخ داد!
دیتا نمونه بگذارین و خروجی مورد نظر رو دقیق مشخص کنین.

Mehr@ban
پنج شنبه 17 اسفند 1396, 00:39 صبح
خب بابت طولانی شدن و دیر شدن عذرخواهی میکنم

اینم نمونه مد نظر من:

در همون تب اول میخوام کوئری که قرار نمایش داده بشه از طریق همون تکست باکسی که تاریخ رو نشون میده مجددا فیلتر بشه که علی الظاهر چون در کوئری کراستب هست مشکل داره

mazoolagh
یک شنبه 20 اسفند 1396, 08:16 صبح
دیتا رو فراموش کردین!
بنابراین نمیتونم تست کنم

از پارامتر برای کوئری استفاده کنین؛
با فرض اینکه تاریخ رو بصورت STRING ذخیره کردین (که نادرست هست و سرعت رو پایین میاره) یک چیزی شبیه زیر میشه:

PARAMETRS FORMS!frm_stat!txtDataMaliUser TEXT(10);
TRANSFORM Count(tbl_mali.mali_tarikh) AS CountOfmali_tarikh
SELECT tbl_mali.mali_tarikh
FROM tbl_mali
WHERE tbl_mali.mali_tarikh=FORMS!frm_stat!txtDataMaliUse r
GROUP BY tbl_mali.mali_tarikh
ORDER BY tbl_mali.mali_tarikh DESC
PIVOT [mali_UN] & " - " & DLookUp("usr_name","tbl_usr","usr_user = '" & [mali_un] & "'");


تست کنین خبرش رو بدین.

در ضمن:
سرعت پایین بدلیل محاسبات غیر ضروری در بخش PIVOT هست.
نمیدونم چند رکورد دارین ولی برای حدود ده هزار رکورد باید حدود پنج ثانیه باشه.
بجای DLOOKUP جداول رو JOIN کنین.

Mehr@ban
دوشنبه 28 اسفند 1396, 11:51 صبح
تشکر @mazoolagh

الان که فرصت تست نیست
ولی قطعا نتیجه بررسی رو اعلام میکنم

Mehr@ban
سه شنبه 29 اسفند 1396, 12:46 عصر
سلام مجدد

بله متاسفانه بررسی کردم و فایل ضمیمه رو اصلاح کردم
جداول به صورت لوکال اصلاح شد!

ممنون میشم که مجددا تست بفرمایید

mazoolagh
یک شنبه 19 فروردین 1397, 10:06 صبح
با دیتا نمونه هم تست کردم
همون کد گذاشتم درست هست.

mazoolagh
یک شنبه 19 فروردین 1397, 10:16 صبح
نمونه :

147898

147900

Mehr@ban
دوشنبه 20 فروردین 1397, 11:32 صبح
از کدها و تصاویری که ارسال کردین نهایت تشکر رو دارم.
ولی متاسفانه من نتونستم نتیجه مطلوب رو داشته باشم

امکان داره نمونه رو کامل بفرمایید و ارسال کنید؟

mazoolagh
سه شنبه 21 فروردین 1397, 11:45 صبح
نمیدونم چجوری تست کردین که جواب نگرفتین!

کد همونی هست که قبلا گذاشتم - کافی بود همون رو استفاده کنین

با این وجود پیوست میکنم

Mehr@ban
سه شنبه 21 فروردین 1397, 13:36 عصر
برای خودمم جالب بود که چرا جواب نداد :گیج:
همون کد رو عینا در محیط sql قرار دادم ولی جواب نداد

بابت نمونه هم تشکرات بسیار :لبخندساده: