我正在将此代码用于Access 2010数据库,我似乎对我的SQL语句的语法有问题,但我不能在我的生活中弄清楚如何正确格式化语句.预先感谢您的任何帮助!
qdf = db.CreateQueryDef("Company_State_Q")
Dim strSQLSearch As String
strSQLSearch = "SELECT [Company Information].Company_Name, " & _
"[Company Information].Industry" & _
"FROM Company Information" & _
"WHERE [Company Information].State ='" & stateV & "'" & _
"ORDER BY [Company Information].Company_Name;"
qdf.SQL = strSQLSearch
Run Code Online (Sandbox Code Playgroud)
Han*_*sUp 12
你应该用......
Debug.Print strSQLSearch
Run Code Online (Sandbox Code Playgroud)
...在构建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;
Run Code Online (Sandbox Code Playgroud)
实际看到完成的strSQLSearch字符串后,很容易发现多个问题:
IndustryFROM 应该 Industry FROMFROM 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
Run Code Online (Sandbox Code Playgroud)
在代码的开头你也有......
qdf = db.CreateQueryDef("Company_State_Q")
Run Code Online (Sandbox Code Playgroud)
它似乎qdf必须是DAO.QueryDef对象,所以我认为你应该使用Set关键字来分配它.
Set qdf = db.CreateQueryDef("Company_State_Q")
Run Code Online (Sandbox Code Playgroud)