对不起,我偶尔会提到一些问题,可能已经修好了。在任何情况下,我都会感谢对#的澄清 我有一个TariffeEstere表,其中包括country,Min,Max,tariff 从中提取有关国家的费率,取决于价值是否在最小值和最大值之间,我应该返回一个记录,从中提取其关税: 查询是:
stsql = "Select * from QPagEstContanti Where country = ' Spain '
and min <= ImpAss and max >= ImpAss"
其中ImpAss是double类型的变量。
当我这样做的时候 rstariffa.open ststql,..... recodset包含一条记录,例如ImpAss = 160(即没有小数的整数),然后查询有效,但如果它包含21,77 ImpAss(意大利格式)不再起作用并且给我一个语法错误。
验证查询字符串(stsql)的内容实际上我找到了:
Select * from QPagEstContanti Where country = 'Spain' and min < = 21,77 and max > = 21,77
在实践中烦恼并想要一个逗号小数,但不知道怎么办。 我试图通过一个
format (ImpAss, "####0.00"),
但是你在stsql中找到的值总是21,77。 我该如何解决这个问题?
答案 0 :(得分:1)
听起来,SQL中的基础语言设置期待'。'小数而不是','十进制表示法。
要检查这一点 - 运行DBCC useroptions命令并查看“语言”值的设置。如果语言设置为英语或其他'。'十进制表示法 - 它解释了为什么你的SQL字符串失败,值为double。
如果这是问题,最简单的解决方法是在stsql =语句后插入以下行:
stsql = REPLACE(stsql,“,”,“。”)
修复它的另一种方法是使用ALTER LOGIN命令更改登录的DEFAULT_LANGUAGE(但这会永久更改设置)
修复它的另一种方法是将此命令添加到stsql的开头,这应该在rs.Open的持续时间内更改语言:
“SET LANGUAGE Italian;”