Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Не импортируются колонки XLSX с десятичным разделителем [203] / 2 сообщений из 2, страница 1 из 1
04.04.2018, 11:00
    #39625393
Не импортируются колонки XLSX с десятичным разделителем [203]
Импортирую данные из файла XLSX в таблицу с вещественным полем типа DOUBLE PRECISION. При импорте в диалоге «Импорт данных» проблем нет. При импорте с помощью IBEBlock (генерируемого в диалоге «Импорт данных») возникает ошибка «Invalid source field name/index: A». В некоторых случаях удавалось устранить ошибку, удаляя строки, в которых вещественная колонка содержит нецелые значения (т.е. числа с десятичным разделителем), или заменяя десятичный разделитель (запятую) на точку.
Пример файла XLSX прилагается. В диалоге импорта генерируется IBEBlock:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
execute ibeblock
as
begin
  cbb = 'execute ibeblock (RecCount variant)
         as
         begin
           if (ibec_Mod(RecCount, 100) = 0) then
             ibec_Progress(RecCount || '' records imported.'');
         end;';
  
  DB = ibec_CreateConnection(__ctFirebird, 'DBName="LOCALHOST:Ib4Debug";
                                            ClientLib=C:\Work\FirebirdBinLnk\fbclient.dll;
                                            User=SYSDBA; Password=masterkey; Names=WIN1251; SqlDialect=3;');
  try
    ibec_UseConnection(DB);
  
    -- Dropping target table if exists
    if (exists(select rdb$relation_name from rdb$relations where rdb$relation_name = 'Err203')) then
    begin
      execute statement 'drop table "Err203"';
      commit;
    end;
  
  
    -- Creating target table
    execute statement 'CREATE TABLE "Err203" (
                           "Field1" VARCHAR(30),
                           "Field2" DOUBLE PRECISION)';
    commit;
  
    sMappings = '"Field1"="A";' + 
                '"Field2"="B"';
  
    Res = ibec_ImportData(DB, '"Err203"', __impExcel, 'C:\Work\ErrorDemos\IbExpert\203\Err203.xlsx', '', 
                          'RowFirst=1; RowLast=2147483647;
                           DateOrder=DMY; DateSeparator="."; TimeSeparator=":"; DecimalSeparator=","; Sheet=0;', :sMappings, cbb);
  
    if (Res is not null) then
      ibec_ShowMessage(Res || ' records were imported successfully.');
  finally
    ibec_CloseConnection(DB);
  end;

end
...
Рейтинг: 0 / 0
05.04.2018, 17:26
    #39626256
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не импортируются колонки XLSX с десятичным разделителем [203]
Исправил.
...
Рейтинг: 0 / 0
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Не импортируются колонки XLSX с десятичным разделителем [203] / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]