我们正在使用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
我们无法找出发生这种情况的原因或我们可以采取的措施。
答案 0 :(得分:0)
您似乎在客户端和SQL Server计算机上配置了不同的区域设置和/或区域设置。例如,SQL可能配置了英语(美国)语言环境,而客户机(Delphi构建代码)可能具有德语,法语(或其他)语言环境。
在运行时客户端提交ADO查询,假设服务器接受€
作为货币符号,,
(逗号)作为小数分隔符和前导零。在另一端,服务器期望货币符号为$
,小数分隔符.
并且没有前导零。
建议检查fs: TFormatSettings
对象并使用它来设置双方预期的正确区域设置。