PDA

View Full Version : سوال: مشکل در اجرای کوئری با چندین شرط



linktaz
دوشنبه 22 آبان 1396, 13:30 عصر
با سلام
دوستان،در فرم گزارش فایل پیوست من چند تا شرط گذاشتم که در صورتی که در صورتی که کمبوباکس ها انتخاب شوند یا خالی باشند اطلاعات توسط کوئری از جدول استخراج بشه ،اما یکی از شرط ها اصلا جواب نمیده و من هیچج ایرادی توی اون نمیبینم.

147043
شرط واحد متقاضی رو انتخاب میکنم نتیجه کوئری خالیه!
ایراد از کجا میتونه باشه؟

linktaz
چهارشنبه 24 آبان 1396, 07:54 صبح
اساتید کسی کمک نمیکنه؟

mazoolagh
چهارشنبه 24 آبان 1396, 10:50 صبح
طراحی کوئری rep نادرست هست.
باید بصورت پارامتریک طراحی کنین. برای پاس کردن مقدار پارامتر نول هم قبلا نمونه گذاشته بودم.
بعنوان راهنما چند فیلد رو براتون درست کردم. با همین روش بقیه کوئری رو تکمیل کنین.

در ضمن:

فیلد تاریخ باید بصورت عدد ذخیره بشه
در اسامی جداول و فرمها و ... علامت - استفاده نکنین
از کلمات کلیدی مثل date بعنوان اسم فیلد و ... استفاده نکنین


147057

147058

147059

mazoolagh
چهارشنبه 24 آبان 1396, 10:51 صبح
روش ارسال پارامتر به کوئری

Option Compare Database
Option Explicit
Function F1() As Long
Dim qd As QueryDef
Set qd = CurrentDb.QueryDefs("rep_new")
qd.Parameters("@D1") = 910101
qd.Parameters("@D2") = 961230
qd.Parameters("@RunnerID") = 1
qd.Parameters("@Code") = Null
Dim rs As Recordset
Set rs = qd.OpenRecordset
rs.MoveLast
rs.MoveFirst
F1 = rs.RecordCount
rs.Close
Set rs = Nothing
End Function

mazoolagh
چهارشنبه 24 آبان 1396, 10:54 صبح
و برنامه نمونه

linktaz
شنبه 27 آبان 1396, 12:31 عصر
روش ارسال پارامتر به کوئری

Option Compare Database
Option Explicit
Function F1() As Long
Dim qd As QueryDef
Set qd = CurrentDb.QueryDefs("rep_new")
qd.Parameters("@D1") = 910101
qd.Parameters("@D2") = 961230
qd.Parameters("@RunnerID") = 1
qd.Parameters("@Code") = Null
Dim rs As Recordset
Set rs = qd.OpenRecordset
rs.MoveLast
rs.MoveFirst
F1 = rs.RecordCount
rs.Close
Set rs = Nothing
End Function

سلام
جناب mazoolagh من متوجه منظورتون از ارسال پارامتر به کوئری نشدم.میشه بیشتر توضیح بفرمائید

mazoolagh
چهارشنبه 01 آذر 1396, 08:24 صبح
نمونه پیوست میکنم تا نکات تاریک روشن بشه.

بسته به اینکه بخواین نتایج جستجو در فرم یا گزارش بیاد، روشهای مختلفی هست که من برای چند تای اونها نمونه گذاشتم:

147115

mazoolagh
چهارشنبه 01 آذر 1396, 08:28 صبح
DoCmd.OpenForm "Search_Results_Unbound"
.....
.....
Private Sub Form_Open(Cancel As Integer)
Dim qd As QueryDef
Set qd = CurrentDb.QueryDefs("rep_new")
qd.Parameters("@D1") = Forms!Search!D1
qd.Parameters("@D2") = Forms!Search!D2
qd.Parameters("@RunnerID") = Forms!Search!RunnerID
qd.Parameters("@Code") = Forms!Search!CodeID
Set Me.Recordset = qd.OpenRecordset
End Sub

mazoolagh
چهارشنبه 01 آذر 1396, 08:30 صبح
DoCmd.OpenForm "Search_Results_Unbound_2", , , , , , WHERE
.....
.....
Private Sub Form_Open(Cancel As Integer)
Me.RecordSource = "SELECT * FROM main_tr WHERE " & Me.OpenArgs
End Sub

mazoolagh
چهارشنبه 01 آذر 1396, 08:32 صبح
DoCmd.OpenReport "Search_Results_Unbound", acViewReport, , , , WHERE
.....
.....
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = "SELECT * FROM main_tr WHERE " & Me.OpenArgs
End Sub

mazoolagh
چهارشنبه 01 آذر 1396, 08:34 صبح
برنامه نمونه