1

我正在将此代码用于 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
4

1 回答 1

12

你应该使用...

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字符串,就很容易发现多个问题:

  1. IndustryFROM应该Industry FROM
  2. FROM Company Information应该FROM [Company Information]
  3. InformationWHERE应该Information WHERE
  4. '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")
于 2012-07-06T00:37:43.173 回答