powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вставка текста с апострофом
25 сообщений из 80, страница 2 из 4
Вставка текста с апострофом
    #39402345
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne,

На Делфи написан движок для выполнения скриптов. Это не камильфо?
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402455
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimujinНе сам, конечно, а работая на IT фирме.
Если ты до сих пор не знал фишку с нечётным числом апострофов, то твоё увольнение было
благом для этой фирмы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402458
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Просто я уже давно отошел от программирования, и никто меня не увольнял )))
На своих предприятиях веду учет в своих же программах, поэтому иногда приходится что-то дописывать.
И если эта "фишка" с нечетным числом апострофов всем известна, то почему это не баг, а "фишка"?
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402462
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimujinИ если эта "фишка" с нечетным числом апострофов всем известна, то почему это не баг, а
"фишка"?

Потому что это основы любого языка программирования, изложенные в любом букваре по
этому языку: что делать с литералами, включающими в себя терминатор этих самых литералов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402463
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Вы видимо невнимательно читали мое первое сообщение. Апостроф там не терминатор, а часть текста внутри кавычек. Как часть текста (если это не кавычка) может влиять на принятие или непринятие этого текста для записи его в текстовое поле?
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402466
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimujinАпостроф там не терминатор, а часть текста внутри кавычек.
Каких кавычек? У тебя там везде апострофы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402467
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

insert into sporg (id, CENA_SER3, KS, NDS_RS, NUMORG, FIO, NAMPOL, CENA_SER1, CENA_SER2,
CENA_ZOL, NAC_OTHER, DOGOVOR_M, KONTAKT, MARK, DOGOVOR, OKPO, TIP, CODORG, PRZ, PINDEX,
NAMUSER, DIRECTOR, TELEFON, BUX, DOM, POST_ADDR, BANK, RS, NAMORG, UL, EMAIL, GOROD, MFO,
NSVID, NALOGN, DATCREATE, DATMOD)
values (554, 0, '', 0, 618, '', '', 0, 0, 0, 0, '', '', 0, '', '', '', 554, 0, '', 'Дима 10.02.2017 10:43:12', '', '', '', '', '',
'Доп.офис `Лесной `ПАО `Банк `Санкт-Петербург`', '', 'Маркет', '', '', '', '', '', '', '2017-02-02 17:32:30.0000',
'2017-02-10 10:44:30.0000')
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402468
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Причем, если вот так:

insert into sporg (id, CENA_SER3, KS, NDS_RS, NUMORG, FIO, NAMPOL, CENA_SER1, CENA_SER2,
CENA_ZOL, NAC_OTHER, DOGOVOR_M, KONTAKT, MARK, DOGOVOR, OKPO, TIP, CODORG, PRZ, PINDEX,
NAMUSER, DIRECTOR, TELEFON, BUX, DOM, POST_ADDR, BANK, RS, NAMORG, UL, EMAIL, GOROD, MFO,
NSVID, NALOGN, DATCREATE, DATMOD)
values (554, 0, '', 0, 618, '', '', 0, 0, 0, 0, '', '', 0, '', '', '', 554, 0, '', 'Дима 10.02.2017 10:43:12', '', '', '', '', '',
'Доп.офис `Лесной ПАО `Банк `Санкт-Петербург`', '', 'Маркет', '', '', '', '', '', '', '2017-02-02 17:32:30.0000',
'2017-02-10 10:44:30.0000')

то все работает.
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402470
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timujin, тебя в ГуглЯндексах забанили?
Послали жеж конкретно 20201764 .
Чего не понятно?
Или тебе надо расжувать и вовнутрь протолкнуть?
Типа сам ты ни фига осилить не можешь.
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402471
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne,

Мне непонятно следующее: для обозначения текста в синтаксисе FB используется одинарная кавычка, так?
Символ "апостроф" как терминатор для разделения текста не работает, так? Тогда почему наличие апострофов внутри текста как-то влияет на выполнение скрипта, который я привел (insert)
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402472
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimujinМне непонятно следующее:
Тебе не понятно - ты и ищи ответ. А не жди маны небесной.
Это описано в литературе. А значит есть в доке.
Тока не надо пищать "Форумы для того что бы помогать!"...
Напряги извилины и заюзай поиск по фору и Интернету, что четко соотвествует 1066863 .
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402474
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimujinТогда почему наличие апострофов внутри текста как-то влияет на выполнение скрипта, который
я привел (insert)

Потому что проблема не в Firebird, а твоём кривом парсере. В IBExpert этот запрос, ты
сказал, работает. А в isql?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402479
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Причем тут мой парсер???

Вот часть кода из делфи:
Код: 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.
29.
30.
31.
procedure pfExecSQL(P: TParamList; var FError: Boolean); far;
var
  StrSQL : String;
  IBTransactionMain : TIBTransaction;
  Cursor : TIBQuery;
  IDT : integer;
begin
  StrSQL := P.GStrI(0);
  if StrSQL <> '' then begin
     Cursor := TIBQuery.Create(nil);
     Cursor.Database    := CommandsDataModule.IBDataBase1;
     IBTransactionMain := TIBTransaction.Create(Cursor);
     IBTransactionMain.DefaultDataBase:= CommandsDataModule.IBDataBase1;
     IDT := CommandsDataModule.IBDataBase1.AddTransaction(IBTransactionMain);
     Cursor.Transaction := IBTransactionMain;
     Cursor.SQL.Add(StrSQL);
      try
        Cursor.ExecSQL;
        Cursor.Transaction.Commit;
        Cursor.Database.RemoveTransaction(IDT);
        Cursor.Free;
      except
        on E: Exception do begin
          Cursor.Transaction.Rollback;
          Cursor.Database.RemoveTransaction(IDT);
          Cursor.Free;
          MessageDlg(E.Message, mtError, [mbOk], E.HelpContext);
        end;
      end;
  end; // if
end;



В переменную StrSQL приходит именно тот insert, который я написал выше. И что с ним не так?
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402484
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

авторНу сделай заявку на трэкер Firebird, чтобы в 4.0 добавили возможность передавать в SQL без параметров строковые константы, обрамленные кавычкой, включающие в себя кавычки, особенно нечетное их кол-во :)

Еще раз повторяю: у меня внутри строковой константы НЕТ кавычек! Внутри строковой константы символ ` (на клавиатуре в русской раскладке буква Ё)
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402491
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovTimujinТогда почему наличие апострофов внутри текста как-то влияет на выполнение скрипта, который
я привел (insert)

В IBExpert этот запрос, ты сказал, работает. А в isql?


в isql тоже работает. блин. не понимаю...
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402492
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimujinЯ пока слышу только одного ;)
Ага. Который тыркает, уже 2-ю страницу, своим бредокодом, который нафех ни кому не нужен.
А остальные - откровенно болт забили на сие невежество.

Timujin
Код: pascal
1.
2.
3.
4.
5.
6.
  StrSQL := P.GStrI(0);
  if StrSQL <> '' then begin
     ....
     Cursor.SQL.Add(StrSQL);
     ....
     end;



Бест_каментов...
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402493
Timujin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И у меня работает. Меняю в строке количество символов ` (ASCII-код 96, не путать с одинарной кавычкой) - не работает.
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402495
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimujinВ делфи приходит строка с инсертом, описанная выше. Причем тут мой парсер?
Строка в Дельфю откуда берется?
Приводить в нормализованный вид бредоконтент кто должен?
FB - тут не приделах. Точка.
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402506
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timujinв isql тоже работает. блин. не понимаю...
Вооот... В двух парсерах, написанных не тобой, скрипт работает. Какой отсюда вывод?..

TimujinИ что с ним не так?
Практически всё. Главное - отсутствие "ParamCheck := false;"
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39402541
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПрактически всё. Главное - отсутствие "ParamCheck := false;"
До этого можно было автору и отладчиком дойти простым вообще-то.

Кстати, я больше от этого кайфанул:
Код: pascal
1.
2.
3.
     Cursor := TIBQuery.Create(nil);
     Cursor.Database    := CommandsDataModule.IBDataBase1;
     IBTransactionMain := TIBTransaction.Create(Cursor);
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39403181
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockDimitry SibiryakovПрактически всё. Главное - отсутствие "ParamCheck := false;"
До этого можно было автору и отладчиком дойти простым вообще-то.

Кстати, я больше от этого кайфанул:
Код: pascal
1.
2.
3.
     Cursor := TIBQuery.Create(nil);
     Cursor.Database    := CommandsDataModule.IBDataBase1;
     IBTransactionMain := TIBTransaction.Create(Cursor);



А чо таково? Помнится IBConcole в таком же стиле был написан.
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39403513
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ближе к делу.

Накидал тестик для поверки догадки на счет ParamCheck := False;

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table T (
ID integer not null primary key,
NAME varchar(200)
);

-- генератор ID и соответствующий триггер опускаю

insert into t(name) values('Доп.офис `Лесной `ПАО `Банк `Санкт-Петербург`');
insert into t(name) values('Доп.офис  Лесной `ПАО `Банк `Санкт-Петербург`');



Firebird-2.5.1
D7
FIBPlus.6.9.9
IBX какой был в D7, хотя может быть и патчил когда-то давно.

Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
type
  TForm2 = class(TForm)
    Database: TpFIBDatabase;
    Trans: TpFIBTransaction;
    QIns: TpFIBQuery;
    BtnFIB: TButton;
    MemoSQL: TMemo;
    IBDatabase: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBSQL1: TIBSQL;
    BtnIBX: TButton;
    procedure BtnFIBClick(Sender: TObject);
    procedure BtnIBXClick(Sender: TObject);
  end;

procedure TForm2.BtnFIBClick(Sender: TObject);
begin
  Database.Open;
  QIns.SQL.Clear;
  QIns.SQL := MemoSQL.Lines;
  QIns.ExecQuery;
  Trans.Commit;
  Database.Close;
  ShowMessage('Ok');
end;

procedure TForm2.BtnIBXClick(Sender: TObject);
begin
  IBDatabase.Open;
  IBSQL1.SQL.Clear;
  IBSQL1.SQL := MemoSQL.Lines;
  IBTransaction1.StartTransaction;
  IBSQL1.ExecQuery;
  IBTransaction1.Commit;
  IBDatabase.Close;
  ShowMessage('Ok');
end;

// в дизайнере установлено по умолчанию:
//QIns.ParamCheck := True;
//IBSQL1.ParamCheck := True;



Работает без ошибок при строке и с 4 и с 5 обратными апострофами.
И в IBX и в FIB.
С включенной проверкой параметров.

Может быть у меня патченый IBX как раз на эту тему, а может
Код: plaintext
ParamCheck
вообще ни при чем.
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39403547
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык ты запросы в дизайн-тайм забил, наверное?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39403548
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отладчиком надо пройтись. ТС'у. Это решит вопрос.
...
Рейтинг: 0 / 0
Вставка текста с апострофом
    #39403561
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraks,

люди пишут про ошибку с четностью кавычек в insert еще тут - 14105957 , в 2013 году.
в 2005 году та же фигня - http://delphimaster.net/view/3-1117241713
Про paramcheck:=False - это если в данных есть "закавыченные двоеточия".
В общем, х.з., надо сравнивать разные версии ibx.
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 2 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вставка текста с апострофом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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