更新表时奇怪的货币格式

时间:2015-03-25 12:31:22

标签: delphi ado

我们正在使用TAdoQuery以正常的打开/编辑/发布顺序更新SQL Server表。

这里的一切正常,但更新在我们的客户网站上失败了。使用SQL Server Profiler,我们发现了以下内容:

exec sp_executesql N'UPDATE "Eclipse".."Loan"
SET "Balance"=@P1,"Status"=@P2,"Act"=@P3
WHERE "Rec"=@P4 AND "Balance"=@P5 AND "Status"=@P6 AND "Act"=@P7',
N'@P1 money,@P2 varchar(8000),@P3 bit,@P4 int,@P5 money,@P6 varchar(8000),@P7 bit',
$0.0000,'Cancelled',0,272188,$-13879.-4400,'Active',1

有趣的部分是参数P5定义为货币并给出值$ -13879.-4400

我们无法找出发生这种情况的原因或我们可以采取的措施。

1 个答案:

答案 0 :(得分:0)

您似乎在客户端和SQL Server计算机上配置了不同的区域设置和/或区域设置。例如,SQL可能配置了英语(美国)语言环境,而客户机(Delphi构建代码)可能具有德语,法语(或其他)语言环境。

在运行时客户端提交ADO查询,假设服务器接受作为货币符号,,(逗号)作为小数分隔符和前导零。在另一端,服务器期望货币符号为$,小数分隔符.并且没有前导零。

建议检查fs: TFormatSettings对象并使用它来设置双方预期的正确区域设置。