2014-09-13 75 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

相关问题