【发布时间】:2018-04-14 05:57:38
【问题描述】:
我需要使用 Access VBA 在 orderline 上插入链接的 PostgreQL 表。为了便于报告,我决定包括 netto 价格,它是一个数字 18,2 字段。 我的电脑有一个比利时句点,使用逗号作为小数分隔符。即 0.8 表示为 0,8
如果插入语句,这是有问题的部分
mijnSQL = "INSERT INTO tblOrderLijnen (OrderID, Nettoprijs )"
mijnSQL = mijnSQL & " VALUES (" & NieuwOrderId& "', " & MijnTempOrderLijn!Prijs * ((100 - Korting) / 100) & ");"
计算的结果是0.8(在我的电脑上是0,8)
DoCmd.RunSQL mijnSQL
转换为小数点无效的查询,因为小数点是逗号。我该如何解决这个问题?
INSERT INTO tblOrderLijnen (OrderID, OrderNr,ArtikelID,Aantal,Nettoprijs )
VALUES (216, 0,8);
字段数不匹配
我将插入更改为引用十进制值。这似乎有效,但它有效吗?我以后会遇到问题吗?
如果插入语句,这是有问题的部分
mijnSQL = "INSERT INTO tblOrderLijnen (OrderID, Nettoprijs )"
mijnSQL = mijnSQL & " VALUES (" & NieuwOrderId& "', " & MijnTempOrderLijn!Prijs * ((100 - Korting) / 100) & ");"
【问题讨论】:
-
一种解决方案是使用正确参数化的查询,而不是将所有内容转换为字符串并将它们连接起来 - 即将浮点值传递给服务器。也就是说,即使您的值为
216和0.8,字段数也不正确:您为 5 个字段指定了 2 个值。 -
使用参数(准备好的查询)。它是对非美国应用程序(数字、货币、日期)的基本保护
-
@JacekCz 它是任何远程处理 SQL 的基本保护,无论是否美国。
-
谢谢。我会看看参数化。字段数量的错误是由于我简化了查询。感谢 Mat 的补充评论。
标签: sql vba postgresql ms-access decimal-point