PDA

View Full Version : مبتدی: انتخاب کوئری



the_hint
سه شنبه 11 دی 1397, 15:04 عصر
سلام
من چند تا جدول انجام کارهای مختلف دارم برای هر کدوم یک کوئری درست کردم که بازدن یک دکمه تاریخی رو که توی فرم مشخص کردم رو میگیرن و کارهایی که در اون روز انجام شده رو لیست میکنن حالا من وقتی میزنم دکمه رو تمام کوئری ها باز میشن ولی من میخوام فقط کوئری هایی باز بشن که در حداقل یک نتیجه رو دارن و مابقی باز نشن
خودم با Dlookup نوشتم ولی بعضی وقتا بعضی جدولها رو باز نمیکنه میخوام از یه روش دیگه امتحان کنم
ممونومن میشم اگه راه نماییم کنین

the_hint
سه شنبه 18 دی 1397, 01:20 صبح
کسی نیست کمک کنه
میبخشید بزارید کاملتر بگم
من تعدادی جدول دارم که هر کدام قسمتی از یک گزارشکار هستند
برای نشان دادن همه کارهایی که در یک روز ساخته شده برای هر کدوم از جدول یک کوئری ساختم که بر اساس تاریخی توی فرم هست کارهای انجام شده در یک تاریخ رو نشون میده
حالا مشکلم این بود که وقتی دکمه رو میزدم تمام کوئری ها باز میشن ولی من میخواستم فقط اونهایی باز شن که رکوردی در اون تارخ دارن برای همین هم از این کدها استفاده کردم
If DLookup("date", "Tbl_boiler_M") = Date Then DoCmd.OpenQuery "Q_boiler_M_today"
Else

End If


If DLookup("date", "Tbl_boiler_S") = Date Then
DoCmd.OpenQuery "Q_boiler_S_today"
Else

End If


If DLookup("date", "Tbl_chiller_M") = Date Then
DoCmd.OpenQuery "Q_chiller_M_today"
Else


End If


If DLookup("date", "Tbl_chiller_S") = Date Then
DoCmd.OpenQuery "Q_chiller_S_today"
Else


End If


If DLookup("date", "Tbl_Disel_M") = Date Then
DoCmd.OpenQuery "Q_Disel_M_today"
Else


End If


If DLookup("date", "Tbl_Disel_S") = Date Then
DoCmd.OpenQuery "Q_Disel_S_today"
Else


End If


If DLookup("date", "Tbl_exust_M") = Date Then
DoCmd.OpenQuery "Q_exust_M_today"
Else


End If


If DLookup("date", "Tbl_exust_S") = Date Then
DoCmd.OpenQuery "Q_exust_S_today"
Else


End If


If DLookup("date", "Tbl_Heat exchanger_M") = Date Then
DoCmd.OpenQuery "Q_Heat exchanger_M_today"
Else


End If


If DLookup("date", "Tbl_Heat exchanger_S") = Date Then
DoCmd.OpenQuery "Q_Heat exchanger_S_today"
Else


End If
If DLookup("tarikh", "Tbl_housekeeping") = Date Then
DoCmd.OpenQuery "Q_housekeeping_today"
Else




End If


If DLookup("date", "Tbl_Pump_M") = Date Then
DoCmd.OpenQuery "Q_Pump_M_today"
Else




End If


If DLookup("date", "Tbl_Pump_S") = Date Then
DoCmd.OpenQuery "Q_Pump_S_today"
Else




End If


If DLookup("date", "Tbl_Softener_S") = Date Then
DoCmd.OpenQuery "Q_Softener_S_today"
Else




End If


If DLookup("Date", "Tbl_split") = Date Then
DoCmd.OpenQuery "Q_Spilet_today"
Else




End If


If DLookup("date", "Tbl_Softener_M") = Date Then
DoCmd.OpenQuery "Q_Softener_M_today"
Else




End If


If DLookup("date", "Q_other_today") = Date Then
DoCmd.OpenQuery "Q_other_today"
Else


End If



حالا مشکل اینجاست که بعضی از کوئریها که مقدار هم دارن باز نمیشن و اینکار هم بر اساس هیچ قاعده ای نیست مثلا امروز باز میشن و فردا باز نمیشن!!
من احتمال میدم در طریقه نوشتن کد اشتباه شده باشه چون من زبان وژوال بیسیک رو یاد ندارم

در ضمن در اینجا Date همون تاریخی هست که توی فرم نوشته میشه

mazoolagh
سه شنبه 18 دی 1397, 12:57 عصر
1- اسم Date جزو reserved words های اکسس هست و نباید برای فیلد استفاده بشه
2- اگر تاریخ رو بصورت string ذخیره کرده باشین از این اتفاقها ممکنه پیش بیاد - فرضا فیلد خالی نیست و کارآکتر فاصله داره

the_hint
چهارشنبه 19 دی 1397, 02:01 صبح
1- اسم Date جزو reserved words های اکسس هست و نباید برای فیلد استفاده بشه
2- اگر تاریخ رو بصورت string ذخیره کرده باشین از این اتفاقها ممکنه پیش بیاد - فرضا فیلد خالی نیست و کارآکتر فاصله داره
ممنون از پاسختون
اسمه رو عوض کردم هم در جداول و هم در فرم باز هم درست نشد
تاریخ رو به صورت short text معرفی کردم و یک فرم calender شمسی رو باهاش توی فرم لینک کردم تا تاریخ رو بنویسه و احتمال اینکه کاراکتر خالی بزاره خیلی ضعیف هست
جالب اینجاست که و وقتی توی فرم مقدار دارم و کوئری که باید باز نمیکنه به صورت دستی باز میکنم مشکلی نیست ولی داستان اونجاست که روی تابع dlookup میره و تشخیص نمیده و ازش رد میشه
به نظرتون از روش دیگه ای هم میشه استفاده کرد؟

mazoolagh
چهارشنبه 19 دی 1397, 12:22 عصر
غیر از فیلد date متغیر Date هم دارین که در واقع تابع Date میشه که به این شکل که استفاده کردین تاریخ جاری میلادی رو برمیگردونه
اصلا چه شکلی بهش مقدار دادین که بخواین با نتیجه dlookup مقایسه کنین؟

برنامه نمونه بگذارین
یا
با dcount رکوردها رو بشمارین

the_hint
پنج شنبه 20 دی 1397, 02:10 صبح
غیر از فیلد date متغیر Date هم دارین که در واقع تابع Date میشه که به این شکل که استفاده کردین تاریخ جاری میلادی رو برمیگردونه
اصلا چه شکلی بهش مقدار دادین که بخواین با نتیجه dlookup مقایسه کنین؟

برنامه نمونه بگذارین
یا
با dcount رکوردها رو بشمارین
تمامی date ها رو تغییر نام دادم ولی بازم درست نشد
الان با تابع dcount که گفتید نوشتم و جواب گرفتم
ممنون