0
我想打开基于查询的记录集。该查询具有10个与表单匹配的参数。这些参数有点复杂,因为它们正在搜索部分字符串匹配。问题定义Querydef参数,运行时错误13类型不匹配
我遇到了多个问题,它似乎访问不会让我打开一个记录集基于查询从表单拉参数。相反,我现在试图打开一个querydef并将其传递给记录集。我现在尝试运行该函数时出现运行时错误13类型不匹配。有没有更好的方法来做我想做的事情?有没有人有任何解决这个错误的见解?错误是突出显示第一个参数(出口国),但如果这是一个问题,我相信他们都是。谢谢!
*修改,试图通过记录传递条件参数,而不是
Function StatementUpdate()
Dim dbs As DAO.Database
Dim rstStatements As DAO.Recordset
Dim rstCBG As DAO.Recordset
Dim concStatement As String
Dim strSQL As Variant
Set dbs = CurrentDb()
strSQL = "SELECT [Statement] FROM [St_Gen_Qry] WHERE" _
& " (([Statement Category]='General Information')" _
& " And ([Export Country] Like '*" & Forms!New_Shipment_Home_frm.[Export Country] & "*'" _
& " Or [Export Country]='All')" _
& " And ([Export State] Like '*" & Forms!New_Shipment_Home_frm.[Export State] & "*'" _
& " Or [Export State]='All')" _
& " And ([Import Country] Like '*" & Forms!New_Shipment_Home_frm.[Import Country] & "*'" _
& " Or [Import Country]='All')" _
& " And ([Import State] Like '*" & Forms!New_Shipment_Home_frm.[Import State] & "*'" _
& " Or [Import State]='All')" _
& " And ([Shipment Type] Like '*" & Forms!New_Shipment_Home_frm.[Shipment Type] & "*'" _
& " Or [Shipment Type]='All')" _
& " And ([Material Category] Like '*" & Forms!New_Shipment_Home_frm.[Material Category] & "*'" _
& " Or [Material Category]='All')" _
& " And ([Sub Category] Like '*" & Forms!New_Shipment_Home_frm.[Sub Category] & "*'" _
& " Or [Sub Category]='All')" _
& " And ([Transgenic/ Conventional] Like '*" & Forms!New_Shipment_Home_frm.RegCode & "*'" _
& " Or [Transgenic/ Conventional]='All')" _
& " And ([Intended Use] Like '*" & Forms!New_Shipment_Home_frm.[Intended Use] & "*'" _
& " Or [Intended Use]='All')" _
& " And ([Permit] Like '*" & Forms!New_Shipment_Home_frm.[Permit Required] & "*'" _
& " Or [Permit]='All')" _
& " And ([Active]='Yes'));"
Set rstStatements = dbs.OpenRecordset(strSQL, dbOpenDynaset)
Set rstCBG = dbs.OpenRecordset("SELECT Cross_Border_Grid_Table.ID, Cross_Border_Grid_Table.St_General FROM Cross_Border_Grid_Table WHERE (Cross_Border_Grid_Table.ID)= " & [Forms]![New_Shipment_Home_frm]![Text105])
rstCBG.MoveFirst
'loop through each record in the CBG that matches select query
Do Until rstCBG.EOF
concStatement = ""
rstStatements.MoveFirst
Do Until rstStatements.EOF
concStatement = concStatement & vbCrLf & rstStatements(0) & vbCrLf
rstStatements.MoveNext
Loop
rstCBG.Edit
rstCBG![St_General] = concStatement
rstCBG.Update
rstCBG.MoveNext
Loop
rstCBG.Close
rstStatements.Close
Set rstStatements = Nothing
Set rstCBG = Nothing
Set dbs = Nothing
Debug.Print "Done"
End Function
谢谢你的建议!我仍然在strSQL上遇到类型不匹配的情况。这是代码的修改部分。 – MDeck
请勿将'LIKE'语句包装在圆括号中,并且必须在表单值和通配符星号('*')周围包含单引号。当你在VBA字符串中断行时,还要确保在'WHERE','AND'和'OR'后加空格。看到我的编辑.. – Parfait
谢谢!我觉得我非常接近。我仍然得到一个运行时间3075的错误,说在strSQL中有一个缺少的操作符,但是我会梳理一下,看看我能否弄清楚。 – MDeck