我正在使用VBA和SQL。我的VBA看起来像
Dim SystemLookup As String
Dim SqlString As String
If IsNull(Me!SystemLookup) Then
Me!SystemLookup = ""
Else
SystemLookup = Me!SystemLookup
End If
SqlString = "SELECT TblField.*, TblOrigin.SystemID" _
& " FROM TblField INNER JOIN TblOrigin ON TblField.OriginID = TblOrigin.OriginID " _
& " WHERE (((TblOrigin.SystemID) = " & systemlookup )) ""
Me.RecordSource = SqlString
End Sub
我对where子句的包围是错误的,但我不确定如何解决。任何建议(Systemlookup是从表单传递的变量)
答案 0 :(得分:1)
您需要将括号放在字符串中,而不是变量。
试试这个:
SqlString = "SELECT TblField.*, TblOrigin.SystemID" _
& " FROM TblField INNER JOIN TblOrigin ON TblField.OriginID = TblOrigin.OriginID " _
& " WHERE (((TblOrigin.SystemID) = " & systemlookup & ")) "
答案 1 :(得分:1)
你错过了&符和双引号并且有一个额外的开口括号。在这个简单的查询中不需要括号。
SqlString = "SELECT TblField.*, TblOrigin.SystemID" _
& " FROM TblField INNER JOIN TblOrigin ON TblField.OriginID = TblOrigin.OriginID " _
& " WHERE TblOrigin.SystemID = " & systemlookup & ";"
当您需要对条件进行分组时,您将括起WHERE子句。 例如,如果您想知道产品是否在两个日期之间发货,或者产品是否未发货,那么您可以将其包括在内。
这三个例子都是有效的:
地点([发货日期]> =#10/28/2017#和[发货日期]< =#10/30/2017#)或[发货日期]为空
地点([发货日期]> =#10/28/2017#和[发货日期]< =#10/30/2017#)或([发货日期]为空)
在哪里(([发货日期]> =#10/28/2017#和[发货日期]< =#10/30/2017#)或([发货日期]为空))