【发布时间】:2018-06-27 21:51:52
【问题描述】:
早上好,
我正在帮助通过 MS Access 中的表单开发界面。我们有一个包含各种用户值的列表框,用户应该能够在 ListBox 中选择多个值,然后按下按钮执行查询,只返回 Car Name 为所选内容的行。
更新 - 感谢这个论坛的一些很好的反馈,主要问题得到了解决。我的次要问题现在无法执行查询。当我尝试时,我收到无法执行查询的错误。
我的按钮代码(作为事件过程)是:
Option Explicit
Private Sub btnSearchCars_Click()
MsgBox "Starting Sub"
Call QueryCars.myQuery
MsgBox "Ending Sub"
End Sub
然后,我的 QueryCars 模块如下所示:
Sub myQuery()
Dim strWhere As String
Dim strSQL As String
Dim varItem As Variant
For Each varItem in Forms!FormSelect!listCarID.SelectedItems
strWhere = strWhere & "'" & Forms!FormSelect!listCarID.ItemData(varItem) & "',"
Next
strWhere = Left(strWhere, Len(strWhere) -1)
strSQL = "SELECT tblBig.* FROM tblCars INNER JOIN tblBig ON tblCars.Car_ID = tblBig.Car_ID WHERE tblCars.Car_ID IN (" & strWhere & ");"
DoCmd.RunSQL strSQL
End Sub
我的错误是“A RunSQL requires an argument of an SQL statement”错误。
DoCmd.RunSQL strSQL
如果有人可以提供帮助,我将不胜感激。我要做的就是从用户选择的列表框中获取值,并将它们用作查询中的 WHERE 条件。我整个上午都在搜索各种 SO 和 Access 论坛,但没有找到任何帮助。
谢谢。如果您有任何问题,请告诉我。
【问题讨论】:
-
strWhere 似乎构造得不好,第一个你有两倍的项目添加,第二个你有一个 , 最后需要删除。
-
@VincentG 感谢您的反馈。我做了这些更改,但仍然遇到同样的错误。
-
myForm声明错误。它应该是As Access.Form通过在每个模块的顶部使用Option Explicit,您应该能够在编译时选择那些错误.. -
嗨@KostasK。谢谢您的答复。不幸的是,尽管我已经调整了代码,但这并没有解决我的错误。
-
如果你不告诉我们,我们怎么知道你“添加了一个额外的功能来删除尾随的','”?