将带有小数点逗号的数字插入到 Postgresql 中

2023-12-26

我需要使用 Access VBA 将订单行插入到链接的 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) & ");"

除了简单地防止 SQL 注入之外,还应考虑 SQL 参数化(应用层代码(如 VBA)中使用的任何 SQL 语句的行业标准)。不仅仅是 Access 或 Postgres。参数化有助于避免引号括起来、转义特殊字符、字符串连接以及指定数据类型以与区域设置保持一致。

在 MS Access 中,您可以使用PARAMETERS子句(在 Access SQL 方言中有效)并使用 VBA 绑定值查询定义 https://msdn.microsoft.com/en-us/library/office/ff193967.aspx。此外,正如所见,代码更干净且更易于维护。

Dim qdef As QueryDef
...

' PREPARED STATEMENT (NO DATA)
mijnSQL = "PARAMETERS [firstparam] Long, [secondparam] Double;" _
           & " INSERT INTO tblOrderLijnen (OrderID, Nettoprijs)" _ 
           & " VALUES ([firstparm], [secondparam]);"

' INITIALIZE QUERYDEF
Set qdef = CurrentDb.CreateQueryDef("", mijnSQL)

' BIND PARAMS
qdef![firstparam] = NieuwOrderId
qdef![secondparam] = MijnTempOrderLijn!Prijs * ((100 - Korting) / 100)

' EXECUTE ACTION QUERY
qdef.Execute dbFailOnError

Set qdef = Nothing
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将带有小数点逗号的数字插入到 Postgresql 中 的相关文章

随机推荐