因为在VBA中编写的一句含有多个变量的SQL语句,始终报错不能正常执行,折腾N小时乃至N天,仍然百撕不得骑姐的大有人在。
W童鞋写的代码如下:
strSQL = "INSERT INTO 凭证记录表 (状态,日期,制单人,制单时间,关联单号)" _
& "VALUES ('未审核'," & Me.日期 & "'," & Forms!SysFrmMain!Nickname & "'," _
& Now() & "'," & Me.单号 & "')"
1.
引号使用有问题,单引号不成对。
2.
日期必须要格式化,并且两端加#号。
3.
Now()函数在SQL中同样可以用,不需要放到VBA中解析。
于是本公子随手帮他改写成了下面这样:
strSQL = "INSERT INTO 凭证记录表 (状态,日期,制单人,制单时间,关联单号)" _
& "VALUES ('未审核', " & Format(Me.日期,"\#yyyy-mm-dd\#") &
",'" _
& Forms!SysFrmMain!Nickname & "',Now(),'" & Me.单号 & "')"
但是,W童鞋用了我发给他的代码试了之后告诉我:仍然不行。这就很尴尬了……
改写后的代码如下:
strSQL = " INSERT INTO 凭证记录表 (状态,日期,制单人,制单时间,关联单号)" _
& " VALUES ('未审核', #@日期#,'@制单人',Now(),'@关联单号')"
strSQL = Repalce(strSQL, "@日期", Format(Me.日期, "yyyy-mm-dd"))
strSQL = Repalce(strSQL, "@制单人", Forms!SysFrmMain!Nickname)
strSQL = Repalce(strSQL, "@关联单号", Me.单号)