我从ADO Recordset获得了奇怪的返回值。
我在VBA,VB和C ++中尝试过它,但每次我得到相同的奇怪和错误的值。
数据以Dec(21,6)
的形式存储在我们的ERP系统中,此信息将传递给ADO正确的(adNumeric, Precision 21, Scale 6)
。
我通过ODBC和ADO连接到数据库,连接工作正常,varChar
,Date
和其他格式只是传递正常,只有dec(21,6)
值显示这个奇怪的结果。
但是,如果我运行MS Query,它会返回正确的值,所以我想我错过了一些设置,但是atm可能无法找出哪些...
我已经尝试过cast
/ convert
的值,但ODBC不支持这一点。我写了一个VB和一个C ++程序并收到了相同的错误值。
这是我用于测试的简单VBA代码:
Sub test()
Dim ADOODBCConnection As ADODB.Connection
Dim ADOODBCConnectionString As String
Dim ADOODBCRS As ADODB.Recordset
Dim TestString As String
Dim TestVariant As Variant
ADOODBCConnectionString = "DSN=myDSN" 'DSN Name
Set ADOODBCConnection = New ADODB.Connection
Set ADOODBCRS = New ADODB.Recordset
ADOODBCRS.Source = "SELECT quantity_amount FROM ENTITY.app_production_ProductionOrder WHERE type_BK ='101' AND number ='PA00041825';"
ADOODBCConnection.Open ADOODBCConnectionString
ADOODBCRS.ActiveConnection = ADOODBCConnection
ADOODBCRS.Open
'wrong Values are already in the recordset
TestString = ADOODBCRS.Fields(0).Value 'wrong Value
TestVar = ADOODBCRS.Fields(0).Value 'wrong ValueUrsprungspost
ADOODBCRS.Close
ADOODBCConnection.Close
End Sub
以下是一些预期和一些收到的值:
Expected Received
1 -13511005043556401
2 -13511005043556402
3 -13511005043556403
7 -13511005043556407
8 -13511005043556408
9 -13511005043556409
10 -885457226534512230449
500 -885456663593148743733