19.05.2008, 14:30 | #1 |
Участник
|
Есть таблица Foxpro, из которой нужно экспортировать данные в Navision.
Подключаюсь через Provider=VFPOLEDB. Текстовые данные считываются без проблем, но, как только дело доходит до Decimal, то вылетает ошибка: "Этот тип не поддержтвается C/SIDE... Пробовал варианты: 1. MyValue := DbfRecords.Fields.Item('FieldName').Value; 2. MyString := FORMAT(DbfRecords.Fields.Item('FieldName').Value) 3. EVALUATE(MyValue,FORMAT(DbfRecords.Fields.Item('FieldName').Value)); где: MyValue - Decimal MyString - Text DbfRecords - Automation - 'Microsoft ActiveX Data Objects 2.8 Library'.Recordset Везде одна и та же ошибка. Буду благодарен за помощь. Спасибо. |
|
19.05.2008, 15:46 | #2 |
Участник
|
прямо в запросе перегоняй число в строку... с датами лучше тоже также поступать
__________________
YEP! тел. (905) 561-94-00 |
|
19.05.2008, 16:04 | #3 |
Участник
|
Запрос у меня следующий (названия полей изменены):
DbfRecords.Open('SELECT TextField, DecimalField, DateField FROM FoxProFile ORDER BY DateField'); Как сделать запрос? Если можно пример. |
|
20.05.2008, 10:02 | #4 |
Участник
|
А если выгрузить сначала в excel, а потом в Nav?
|
|
20.05.2008, 11:52 | #5 |
Участник
|
Выведите поля DecimalField, DateField (не для все выборки, а для парочки первых) в сообщении на экран и поссмотрите как они отображаются.
|
|
20.05.2008, 12:26 | #6 |
Участник
|
Нав не распознает поле типа decimal и boolean, к сожалению не знаю фокспрошонго диалекта SQL, для SQL сервера запрос будет выглядеть как:
DbfRecords.Open('SELECT TextField, cast(DecimalField as money), DateField FROM FoxProFile ORDER BY DateField'); |
|
21.05.2008, 10:37 | #7 |
Участник
|
Пришлось экспортировать через Excel.
Но это, все-таки, обходной и неправильный путь. Если у кого-то возникнут идеи, буду благодарен. |
|
22.05.2008, 14:05 | #8 |
Участник
|
Нашел (не без вашей помощи) следующее решение:
DbfRecords.Open('SELECT TextField, CAST(DecimalField AS VARCHAR(12)) DecimalField, FROM FoxProFile ORDER BY DateField'); Потом делаю преобразовывание: EVALUATE(MyValue, CONVERTSTR(FORMAT(DbfRecords.Fields.Item('DecimalField').Value),'.',',')); CONVERTSTR здесь нужен, так как после CAST десятичный сепаратор получается в виде точки, которую нужно преобразовать в запятую. Всем спасибо. |
|