Я получаю странные возвращаемые значения из моего набора записей ADO.
Я пробовал это на VBA, VB и C ++, но каждый раз получаю одни и те же странные и неправильные значения.
Данные хранятся в нашей системе ERP как Dec(21,6)
, эта информация передается в ADO правильно (adNumeric, Precision 21, Scale 6)
.
Я подключаюсь к БД через ODBC и ADO, соединение работает нормально, и varChar
, Date
и другие форматы просто проходят нормально, только странные значения показывают dec(21,6)
.
Однако, если я запускаю MS Query, он возвращает правильные значения, поэтому я думаю, что мне не хватает некоторых настроек, но я не могу определить, какие из них ...
Я уже пытался 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