powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Не импортируются колонки XLSX с десятичным разделителем [203]
2 сообщений из 2, страница 1 из 1
Не импортируются колонки XLSX с десятичным разделителем [203]
    #39625393
Импортирую данные из файла 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
Не импортируются колонки XLSX с десятичным разделителем [203]
    #39626256
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Не импортируются колонки XLSX с десятичным разделителем [203]
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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