0
我使用的MS Access 2010過濾動態SQL語句2010
我有一個列表框,選擇我查詢的專欄中,我想知道的是它可以過濾第一或整個選擇列表框中。
下面我有我的代碼爲整個選擇和過程獲取信息到一個空查詢和過濾的船名和選擇的列表框(它的工作原理,如果我只選擇一個領域),但如果我做多選,然後我得到這個錯誤。
該錯誤消息是
運行時錯誤 '3075'
語法在查詢表達式錯誤(逗號)「(((q1_shcedule.ship)= [表格]![按日期DLG清單報告選擇]![dbShip]或IsNull([Forms]![dlg清單報表日期選擇]![dcShip])))AND(Jan_10,Jan_11)=「SH」或(Jan_10,Jan_11)=「v」`
任何建議將非常感激。
謝謝。
Dim cdb As DAO.Database, qdf As DAO.QueryDef
Const queryName = "Manifest Report By Date Selection"
Dim strWhere As String
Dim strDate As String
Dim strEnd As String
Dim ctl As Control
Dim varItem As Variant
Dim Criteria As String
Dim itm As Variant
strWhere = "(" & CodeDate.Value & ")"
Set ctl = Me.CodeDate
For Each varItem In ctl.ItemsSelected
strWhere = strWhere & ctl.ItemData(varItem) & ", "
'Use this line if your value is text
'strWhere = (strWhere) & "'" & ctl.ItemData(varItem) & "',"
Next varItem
'trim trailing comma
strWhere = Left(strWhere, Len(strWhere) - 2)
strWhere = Right(strWhere, Len(strWhere) - 2)
Set cdb = CurrentDb
DoCmd.Close acQuery, queryName, acSaveNo
On Error Resume Next
DoCmd.DeleteObject acQuery, queryName
On Error GoTo 0
Set qdf = cdb.CreateQueryDef(queryName, _
"SELECT Q1_Schedule.[Resource Name], Gender, Company, Type, Position, Contract_End_Date, Q1_Schedule.IndividID, Q1_Schedule.Ship, Q1_Schedule.App, Q1_Schedule.SubApp, " + strWhere + " " & _
"FROM Resource INNER JOIN (Q4_Schedule INNER JOIN (Q3_Schedule INNER JOIN (Q2_Schedule INNER JOIN Q1_Schedule ON (Q2_Schedule.App = Q1_Schedule.App) AND (Q2_Schedule.Ship = Q1_Schedule.Ship) AND (Q2_Schedule.IndividID = Q1_Schedule.IndividID)) ON (Q3_Schedule.App = Q2_Schedule.App) AND (Q3_Schedule.Ship = Q2_Schedule.Ship) AND (Q3_Schedule.IndividID = Q2_Schedule.IndividID)) ON (Q4_Schedule.App = Q3_Schedule.App) AND (Q4_Schedule.Ship = Q3_Schedule.Ship) AND (Q4_Schedule.IndividID = Q3_Schedule.IndividID)) ON (Resource.IndividID = Q4_Schedule.IndividID) AND (Resource.IndividID = Q3_Schedule.IndividID) AND (Resource.IndividID = Q2_Schedule.IndividID) AND (Resource.IndividID = Q1_Schedule.IndividID) Where (((Q1_Schedule.Ship) = [Forms]![dlg Manifest Report by Date Selection]![dbShip] OR IsNull([Forms]![dlg Manifest Report by Date Selection]![dbShip]))) AND (" + strWhere + ") = ""SH"" Or (" + strWhere + ") = ""V"" ORDER BY Type DESC ")
' "ORDER BY Type DESC"
'Set qdf = cdb.OpenRecordset("Entire_Manifest", _
dbOpenDynaset, dbDenyRead)
Set qdf = Nothing
Set cdb = Nothing
DoCmd.OpenQuery queryName, acViewNormal, acEdit
Exit Sub
ErrorHandler:
MsgBox "Please Select A Range Of Date Or A Ship Name"
這應該是一個評論,而不是一個答案 –