2012-07-06 56 views
1

我正在使用此代碼用於Access 2010數據庫,而且我似乎對我的SQL語句的語法有問題,但我無法爲我的生活弄清楚如何正確地格式化該聲明。預先感謝您的任何幫助!VBA VBA麻煩

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

問:你是否收到任何錯誤信息?問:你是否有任何理由不把「來自公司信息」的內容放在方括號內?一個像這樣的空間名稱可能會毀了你的整個一天;) – paulsm4 2012-07-06 00:26:50

+0

paulsm4的建議是正確的,只要「stateV」給出所需的字符串,那麼你的問題是沒有用[] – 2012-07-06 08:59:43

回答

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語句的不同部分之間的換行符。數據庫引擎完全滿意換行而不是空格。你可能會發現閱讀陳述更簡單,而不是一條長線。

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") 
+1

附上表名[您的幫助!此外,感謝您不僅發佈正確的回覆,還解釋它。你知道他們怎麼說教一個人釣魚嗎? – 2012-07-08 19:38:57