08.03.2021, 11:07 | #1 |
Сенбернар
|
Ошибка при получении значения поля ADO Recordset
Есть отчет, старый, как... мамонт. Задача - переделать его на работу по новым, прогрессивным технологиям ))
Для этого надо получить значения из формируемого отчетом ADO Recordset и затолкать их в Map. Оно падает, говоря "неправильные типы аргументов в присвоении значения переменной" Код, чтобы воспроизвести (выдрано с мясом из отчета, запрос изменен): X++: static void rvs_Job263(Args _args) { COM rst; COM cnn; COM fields; COM field; SysSQLSystemInfo sqlInfo = SysSQLSystemInfo::construct(); container dataLine; Map dataMap; int dataRow; int dataCol; str axServerName = sqlInfo.getLoginServer(); str axDBName = sqlInfo.getloginDatabase(); str userId = "bla-bla-bla"; str userPassword = "bla-bla-bla"; str constr = "Provider=SQLOLEDB;" + "Data Source=" + axServerName + ";" + "Initial Catalog=" + axDBName + ";" + "uid=" + userId + ";" + "pwd=" + userPassword+";" + "Persist Security Info=true;"; str strSQL = 'select top(100) * from SalesTable'; ; cnn = new COM('ADODB.Connection'); cnn.CommandTimeout(3600); cnn.Open(constr); rst = new COM('ADODB.RecordSet'); rst.Open(strSQL, cnn); fields = rst.fields(); dataMap = new Map(Types::Integer, Types::Container); while (! rst.EOF()) { dataLine = connull(); for (dataCol = 0; dataCol < fields.count(); dataCol++) { field = fields.item(dataCol); dataLine += field.value(); // Тут падаем } dataMap.insert(dataRow, dataLine); } }
__________________
Best Regards, Roman |
|