2014-09-13 91 views
2

第一次使用Access並希望進行使用變量作爲其表名的更新查詢。現在,我已經陷入了一個沒有好處的網絡。當我到達SQL代碼所需的部分時,我得到了Runtime error 3075 - Missing operator in '(((" + enteredid + ".todayDate)=Format(Now()','""Short Date"")))'我從來沒有用SQL編碼,所以我不知道需要什麼操作符。訪問:SQL更新查詢中的運行時錯誤3075(缺少運算符)

我的代碼: strSQL = "UPDATE " + enteredid + " SET " + enteredid + ".signIn = Format(Now(),""Short Time"") WHERE (((" + enteredid + ".todayDate)=Format(Now()','""Short Date"")));"

+1

你必須在過去的「格式」功能的一些隨機的撇號 - 見沒有他們會發生什麼:) – Tim 2014-09-13 07:56:12

回答

2

我的建議:

  1. 您可以通過使用Date()功能,而不是試圖只提取的Now()日期部分避免在WHERE子句中全Format()問題。

  2. 由於您正在對單個表進行更新,因此只需使用不含TableName.前綴的字段(列)名稱即可。

  3. 爲了使代碼更健壯,請將表名稱括在方括號內,以便表名包含空格或其他「有趣」字符時不會崩潰。

因此,修改後的代碼看起來會像這樣:

strSQL = _ 
     "UPDATE [" + enteredid + "] SET " + _ 
      "signIn = Format(Now(),""Short Time"") " + _ 
     "WHERE todayDate = Date()" 
+2

很好的建議。由於Gandalf是Access的新手,他應該學習如何檢查他的代碼構建的'UPDATE'語句。 'Debug.Print strSQL'會有幫助。運行代碼後,Ctrl + g在即時窗口中查看語句文本。對於疑難解答,他可以複製該語句文本並將其粘貼到新查詢的SQL視圖中。 – HansUp 2014-09-13 15:12:36

+0

實際上,我使用的代碼來自我放入SQL視圖並複製的定期更新查詢。奇怪它是如何不起作用的... – 2014-09-13 16:22:01

相關問題