使用数字变量在ADO(vb6)中选择

时间:2014-08-27 18:02:29

标签: vb6 ado

对不起,我偶尔会提到一些问题,可能已经修好了。在任何情况下,我都会感谢对#的澄清 我有一个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。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

听起来,SQL中的基础语言设置期待'。'小数而不是','十进制表示法。

要检查这一点 - 运行DBCC useroptions命令并查看“语言”值的设置。如果语言设置为英语或其他'。'十进制表示法 - 它解释了为什么你的SQL字符串失败,值为double。

如果这是问题,最简单的解决方法是在stsql =语句后插入以下行:
stsql = REPLACE(stsql,“,”,“。”)

修复它的另一种方法是使用ALTER LOGIN命令更改登录的DEFAULT_LANGUAGE(但这会永久更改设置)

修复它的另一种方法是将此命令添加到stsql的开头,这应该在rs.Open的持续时间内更改语言:
   “SET LANGUAGE Italian;”