我的SQL是
"INSERT INTO table1 (Item, Price) VALUE ('" & ItemString & "', " & PriceValue & ")"它工作得很好。但是,如果价格为12,345.67.,则SQL错误消息为
查询值的数量和目标字段的数量不同。
这是因为值为千逗号分隔符。我应该如何修改我的SQL,以使数字值具有逗号分隔符(以及可能的$符号)?
提前谢谢。
发布于 2015-03-17 15:27:25
在这里,您必须始终使用Str将十进制数转换为US格式的字符串表达式,而忽略您的本地设置:
"INSERT INTO table1 (Item, Price) VALUE ('" & ItemString & "', " & Str(PriceValue) & ")"Str的神奇之处在于,它总是插入一个点作为小数点分隔符,不多也不少。这使得它是防弹的,也是最简单的可能的解决方案。
在小数点分隔符不是点的国际环境中,大多数其他方法都会失败。
发布于 2015-03-18 06:21:19
您可以使用Recordset而不是INSERT INTO查询:
Dim RS As DAO.Recordset
Set RS = CurrentDb.OpenRecordset("select * from table1 where 1=0")
RS.AddNew
RS("Item") = ItemString
RS("Price") = PriceValue
RS.Update
RS.Close
Set RS = Nothing备注:
Recordset会自动处理所有麻烦的问题,比如不同的小数点分隔符、字符串中的引号、正确的日期/时间值等等。Microsoft DAO Object Library...this的引用在大多数更新的Access版本中都应该是这样的
where 1=0)是因为Recordset需要“连接”到表来知道列名等。但我们只追加新行,因此实际上不需要加载任何现有行,因此使用where 1=0.
发布于 2015-03-17 12:11:32
以下查询假定Price列的类型为MONEY
"INSERT INTO table1 (Item, Price) VALUE ('" & ItemString & "', CAST(" & PriceValue & ") AS MONEY))"我将PriceValue参数转换为MONEY类型,只要它的格式为$XXX,XXX.XX,它就应该可以工作
https://stackoverflow.com/questions/29091049
复制相似问题