簡體   English   中英

在MS Access 2010中篩選動態SQL語句

[英]Filtering dynamic SQL statement in MS Access 2010

我正在使用MS Access 2010

我有一個列表框可以選擇查詢的列,我想知道是否可以過濾列表框的第一個或整個選擇。

下面我有我的代碼,用於整個選擇以及將信息查詢到一個空查詢並按船名和列表框進行過濾的過程(如果我僅選擇一個字段,則可以使用),但是如果我進行了多次選擇,則我得到這個錯誤。

錯誤消息是

運行時錯誤'3075'
查詢表達式'((((q1_shcedule.ship)= [Forms]![按日期選擇的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"  

在創建查詢並進行研究之前,請打印出您的SQL字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM