Asp classic ADO记录集十进制值问题

Asp classic ADO记录集十进制值问题,asp-classic,vbscript,ado,Asp Classic,Vbscript,Ado,我有类似的代码 Dim A, B, C Set rs = Server.CreateObject("ADODB.Recordset") strSql = "Exec [dbo].[some_sp] IND" rs.open strSql,CN,3,3 Do While Not rs.EOF 'these columns are returned as decimal(10,2) format A = rs("col1") B = rs("col2") rs.MoveNext Loop C

我有类似的代码

Dim A, B, C
Set rs = Server.CreateObject("ADODB.Recordset")
strSql = "Exec [dbo].[some_sp] IND"
rs.open strSql,CN,3,3

Do While Not rs.EOF

'these columns are returned as decimal(10,2) format
A = rs("col1")
B = rs("col2")

rs.MoveNext
Loop

C = A + B 'i get type mismatch error here
我用response.write来检查A,B的值 它们是整数格式,而不是十进制格式

我必须重新格式化记录集才能设置十进制值吗?
由于所有值都是整数(即使是小数),类型不匹配可能会出现什么问题?

ASP/VBScript中的变量只是变量类型,因此可能需要显式转换值

C = CDbl(A) + CDbl(B)

但是,我猜想您的一行中没有col1或col2的数值。当出现类型不匹配错误时,您知道这些值是什么吗?

ASP/VBScript中的变量只是变量类型,因此您可能需要显式转换这些值

C = CDbl(A) + CDbl(B)

但是,我猜想您的一行中没有col1或col2的数值。你知道当你得到类型不匹配错误时这些值是什么吗?

在我的情况下,我发现小数点右边的所有东西都丢失了,基本上返回了一个整数。这是在Access 2007中使用ADO 2.8,在DB2/400 v7r3服务器上调用SQL

我试着使用
VBA.CDbl()
CDec()
,但两者都不起作用。然后读到这个线程,我首先在服务器上尝试转换,因此我将数字转换为实数,即32位(相当于VBA中的单数),这是有效的

这:

…变成了这样:

SELECT CAST(IYONHA / WXUNIT AS REAL) AS VIPCASES
FROM   WINEX
SELECT CAST(CAST(IYONHA / WXUNIT AS NUMERIC(5,2)) AS REAL) AS VIPCASES
FROM   WINEX
…然后将小数四舍五入到两位,结果是:

SELECT CAST(IYONHA / WXUNIT AS REAL) AS VIPCASES
FROM   WINEX
SELECT CAST(CAST(IYONHA / WXUNIT AS NUMERIC(5,2)) AS REAL) AS VIPCASES
FROM   WINEX

在我的情况下,我发现小数点右边的所有内容都丢失了,基本上返回一个整数。这是在Access 2007中使用ADO 2.8,在DB2/400 v7r3服务器上调用SQL

我试着使用
VBA.CDbl()
CDec()
,但两者都不起作用。然后读到这个线程,我首先在服务器上尝试转换,因此我将数字转换为实数,即32位(相当于VBA中的单数),这是有效的

这:

…变成了这样:

SELECT CAST(IYONHA / WXUNIT AS REAL) AS VIPCASES
FROM   WINEX
SELECT CAST(CAST(IYONHA / WXUNIT AS NUMERIC(5,2)) AS REAL) AS VIPCASES
FROM   WINEX
…然后将小数四舍五入到两位,结果是:

SELECT CAST(IYONHA / WXUNIT AS REAL) AS VIPCASES
FROM   WINEX
SELECT CAST(CAST(IYONHA / WXUNIT AS NUMERIC(5,2)) AS REAL) AS VIPCASES
FROM   WINEX

另外,这个过程能返回NULL吗?是的,我做了响应。这里所有这些值的结果是73,0,1,0,0,0,6。我希望它们在相加之前是十进制的,但它们是整数。我计算出来了。我使用了CDbl,它正在工作(Cdec将不工作)啊,是的,在VBScript中不工作。我会用你的发现更新我的答案。另外,这个过程会返回空值吗?是的,我做了响应。在这里为所有这些值写入结果73,0,1,0,0,0,6。我希望它们在添加之前是十进制的,但它们是整数。我算出了。我使用了CDbl,它正在工作(Cdec将不工作)啊,是的,在VBScript中不工作。我会用你的发现更新我的答案。答案:Used A=CDbl(rs(“col1”))B=CDbl(rs(“col2”))答案:Used A=CDbl(rs(“col1”))B=CDbl(rs(“col2”))