powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обрезка части строки после первого апострофа при текстовом inner join в adoquery
10 сообщений из 10, страница 1 из 1
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084545
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если в поле BARNAME есть апостроф ", то часть строки за ним обрезается, если нет - то все ок.
То есть к примеру BARNAME = Бла-бла-бла "123" абл-абл-абл
Останется в итоге Бла-бла-бла
Как побороть, подскажите пжл

Код: pascal
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.
...

ADOConnection.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + dir + ';Extended Properties=''text;HDR=Yes'';';
ADOConnection.Open;

with adoquery do
  begin
    sql.clear;
    sql.text:=' SELECT DISTINCT * FROM (SELECT tb1.CODE,	tb1.BARCODE,	tb1.BARNAME,	tb1.ITEMTYPE,	tb1.ITEMWEIGHT, 
                  ' tb1.GRPNAME,  tb1.GRPCODE, tb1.BRAND,	tb1.MANUFACTUR,	tb1.PRLABEL  FROM [filename1.txt] as tb1 ' +
              ' INNER JOIN  [filename2.txt] as tb2 ON  tb1.[BARCODE] = tb2.[BARCODE]) ';

    active:=false;
    active:=true;

    if recordcount<>0 then
      begin       
        assignfile(f, dir+'filename3.txt');
        rewrite(f);
        writeln(f, 'CODE', chr(9), 'BARCODE', chr(9), 'BARNAME', chr(9), 'ITEMTYPE', chr(9),
               'ITEMWEIGHT', chr(9), 'GRPNAME', chr(9), 'GRPCODE', chr(9), 'BRAND', chr(9),
               'MANUFACTUR', chr(9), 'PRLABEL');
        while not eof do
        begin
          s1:=Fields[0].AsString;
          s2:=Fields[1].AsString;
          s3:=Fields[2].AsString;
          ...



schema.ini

автор[filename1.txt]
Format=TabDelimited
ColNameHeader=True

[filename2.txt]
Format=TabDelimited
ColNameHeader=True
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084546
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потребовать у источника данных чтобы он формировал корректный CSV, а не эту хрень.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084550
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
арт2010

if recordcount<>0 then

Неужели в третьем десятилетии 21-го века кто-то ещё пытается использовать recordcount?
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084551
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener,

Вот как раз времена когда recordcount не работал остались в прошлом тысячелетии.

Вместе с бде и адо.
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084552
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
northener,
Вот как раз времена когда recordcount не работал остались в прошлом тысячелетии.
Вместе с бде и адо.

Неужели такое наконец-то произошло!
Если честно, то не могу поверить!
Но у ТС именно ADO!
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084574
арт2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, формат выгрузки в исходные файлы вряд ли переделать - это устоявшиеся отчеты. Разве что если больше ничего не поможет. Неужели нельзя решить какими либо доп. опциями в строке подключения или схеме? Очевидно же что нужно просто устранить неверную обработку строк с русским апострофом "
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084593
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010
Если в поле BARNAME есть апостроф ", то часть строки за ним обрезается, если нет - то все ок.
То есть к примеру BARNAME = Бла-бла-бла "123" абл-абл-абл
Останется в итоге Бла-бла-бла
Как побороть, подскажите пжл


Заэкранировать двойные кавычки (заменить " на \") в выдаваемом запросом результате и потом при обработке строк в нужном месте разэкранировать?
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084598
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так и не понял, что и где "обрезается" ?
1. Запрос возвращает обрезанные строки ?
2. WriteLn обрезает строку при записи ?
3. AsString - обрезает строку до апострофа ?
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084615
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnsiQuotedStr()
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Обрезка части строки после первого апострофа при текстовом inner join в adoquery
    #40084623
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
арт2010Неужели нельзя решить какими либо доп. опциями в строке подключения или схеме?

Нельзя. ODBC драйвер для текста требует валидный CSV, у тебя он невалидный. Это тупик.
Придётся парсить свой "устоявшийся формат" самостоятельно, поскольку ODBC такого не умеет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обрезка части строки после первого апострофа при текстовом inner join в adoquery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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