你应该使用...
Debug.Print strSQLSearch
...在您构建strSQLSearch
字符串后的代码中。然后,您可以在“立即”窗口中查看该字符串(使用Ctrl+去那里g)。
在即时窗口中,我将值设置stateV
为“CA”并像这样测试您的字符串:
stateV = "CA" : ? "SELECT [Company Information].Company_Name, " & _
"[Company Information].Industry" & _
"FROM Company Information" & _
"WHERE [Company Information].State ='" & stateV & "'" & _
"ORDER BY [Company Information].Company_Name;"
SELECT [Company Information].Company_Name, [Company Information].IndustryFROM Company InformationWHERE [Company Information].State ='CA'ORDER BY [Company Information].Company_Name;
一旦你真正看到完整的strSQLSearch
字符串,就很容易发现多个问题:
IndustryFROM
应该Industry FROM
FROM Company Information
应该FROM [Company Information]
InformationWHERE
应该Information WHERE
'CA'ORDER
应该'CA' ORDER
SELECT
考虑在语句的各个部分之间使用换行符。db 引擎对换行符而不是空格非常满意。而且您可能会发现将语句作为几行而不是一长行来阅读更容易。
Dim strSQLSearch As String
strSQLSearch = "SELECT ci.Company_Name, ci.Industry" & vbCrLf & _
"FROM [Company Information] AS ci" & vbCrLf & _
"WHERE ci.State ='" & stateV & "'" & vbCrLf & _
"ORDER BY ci.Company_Name;"
Debug.Print strSQLSearch
同样在代码的开头,您有...
qdf = db.CreateQueryDef("Company_State_Q")
它似乎qdf
必须是一个 DAO.QueryDef 对象,所以我认为您应该使用Set
关键字来分配给它。
Set qdf = db.CreateQueryDef("Company_State_Q")