Access VBA插入减1小时后的月份出现语法错误求助
Access VBA插入减1小时后月份的语法错误排查
以下是针对你修改代码后出现语法错误的常见排查方向:
日期加减函数参数错误
Access VBA中实现“当前时间减1小时”必须用DateAdd函数,正确写法是DateAdd("h", -1, Now())——第一个参数是时间间隔的缩写(小时用"h"或"hh"),如果写成"hour"这类全称,或者搞反参数顺序(比如把-1放在最后),会直接触发语法错误。月份提取函数的嵌套问题
要获取对应月份,需用Month()函数嵌套在DateAdd外,正确写法是Month(DateAdd("h", -1, Now()))。如果漏写Month()、写错函数名(比如写成Mon()),或者颠倒嵌套顺序,都会导致SQL解析失败。SQL语句的引号冲突
用VBA拼接SQL字符串时,要注意双引号的转义:
错误写法:strSQL = "INSERT INTO [mytable] ([monthColumn]) VALUES (Month(DateAdd("h", -1, Now())))"这里的
"h"会和字符串外层的双引号冲突,需改成单引号或转义双引号:strSQL = "INSERT INTO [mytable] ([monthColumn]) VALUES (Month(DateAdd('h', -1, Now())))" ' 或者 strSQL = "INSERT INTO [mytable] ([monthColumn]) VALUES (Month(DateAdd(""h"", -1, Now())))"字段类型与值的格式不匹配
如果[monthColumn]是数字类型,值不需要加引号;如果是文本类型,必须给月份值加单引号:
数字字段示例:strSQL = "INSERT INTO [mytable] ([monthColumn]) VALUES (" & Month(DateAdd("h", -1, Now())) & ")"文本字段示例:
strSQL = "INSERT INTO [mytable] ([monthColumn]) VALUES ('" & Month(DateAdd("h", -1, Now())) & "')"要是搞反格式(数字字段加引号、文本字段不加),就会触发语法错误。
内容的提问来源于stack exchange,提问作者Shiela
相关产品推荐
相关产品推荐

