Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2012, 11:31   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А это как?
Через ParamByName. показывай как ты делаешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.08.2012, 13:31   #12
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
insert into table values ('Д''Артаньян')
Покажите код обработки dbf и записи в базу
Меня интересует промежуточный этап. То есть, когда строку из dbf поместили в строковую переменую и в этой переменной экранируем одинарные ковычки.

Код:
  with ADOQuery1 do
    begin
      close;
      sql.clear;
      sql.add('select FIELD1,FIELD2,NAME from TABLE order by FIELD1');
      open;
    end;

  while not ADOQuery1.Eof do
    begin
      tempStr := ADOQuery1.fieldbyname('NAME').asString; //здесь одинарные ковычки - два варианта: '' и '
      IBQueryMain.SQL.Clear;
      IBQueryMain.SQL.Add('insert into TABLE'+
      '(NAME,UNN,CODE) values('''+tempStr+''','''+ADOQuery1.fieldbyname('FIELD1').asString+''','''+ADOQuery1.fieldbyname('FIELD2').asString+''')');
      IBQueryMain.ExecSQL;
      ADOQuery1.next;
    end;
Цитата:
Сообщение от Stilet Посмотреть сообщение
Через ParamByName. показывай как ты делаешь.
Нема у меня ParamByName

Код:
tempStr := StringReplace(ADOQuery1.fieldbyname('NAME').asString,'''''','"',[rfReplaceAll]);
tempStr := StringReplace(tempStr,'''','',[rfReplaceAll]);
Две одинарные на двойную. А че с одинарной делать - убрать ее что ли

Последний раз редактировалось Stilet; 14.08.2012 в 20:23.
new player вне форума Ответить с цитированием
Старый 14.08.2012, 13:50   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
вместо
ADOQuery1.fieldbyname('FIELD1').asString
вставить
StringReplace(ADOQuery1.fieldbyname('FIELD1').asString,'''','''''',[rfReplaceAll])
для других, где возможна кавычка аналогично
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.08.2012, 14:01   #14
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
вместо
ADOQuery1.fieldbyname('FIELD1').asString
вставить
StringReplace(ADOQuery1.fieldbyname('FIELD1').asString,'''','''''',[rfReplaceAll])
для других, где возможна кавычка аналогично
Спасибо, Аватар.
new player вне форума Ответить с цитированием
Старый 14.08.2012, 20:27   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Нема у меня ParamByName
Есть. Просто ты о нем не знаешь:
Код:
  with ADOQuery1 do
    begin
      close;
      sql.clear;
      sql.add('select FIELD1,FIELD2,NAME from TABLE order by FIELD1');
      open;
    end;

  while not ADOQuery1.Eof do
    begin
      tempStr := ADOQuery1.fieldbyname('NAME').asString; //здесь одинарные ковычки - два варианта: '' и '
      IBQueryMain.SQL.Clear;
      IBQueryMain.SQL.Add('insert into TABLE (NAME,UNN,CODE) values(:v1,:v2,:V3)');
       IBQueryMain.ParamByName('v1').value:=tempStr;
       IBQueryMain.ParamByName('v2').value:=ADOQuery1.fieldbyname('FIELD1').Value;
       IBQueryMain.ParamByName('v3').value:=ADOQuery1.fieldbyname('FIELD2').Value;
      IBQueryMain.ExecSQL;
      ADOQuery1.next;
    end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.08.2012, 10:49   #16
new player
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 153
По умолчанию

Ну это прям какие-то суслики - их не видишь, а они есть

Цитата:
Сообщение от Stilet Посмотреть сообщение
Есть. Просто ты о нем не знаешь:
Код:
  with ADOQuery1 do
    begin
      close;
      sql.clear;
      sql.add('select FIELD1,FIELD2,NAME from TABLE order by FIELD1');
      open;
    end;

  while not ADOQuery1.Eof do
    begin
      tempStr := ADOQuery1.fieldbyname('NAME').asString; //здесь одинарные ковычки - два варианта: '' и '
      IBQueryMain.SQL.Clear;
      IBQueryMain.SQL.Add('insert into TABLE (NAME,UNN,CODE) values(:v1,:v2,:V3)');
       IBQueryMain.ParamByName('v1').value:=tempStr;
       IBQueryMain.ParamByName('v2').value:=ADOQuery1.fieldbyname('FIELD1').Value;
       IBQueryMain.ParamByName('v3').value:=ADOQuery1.fieldbyname('FIELD2').Value;
      IBQueryMain.ExecSQL;
      ADOQuery1.next;
    end;
new player вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не удаляется запись. Firebird + Interbase artemavd Общие вопросы Delphi 2 08.05.2011 14:30
Firebird - fdb файл увеличивается при записи полей, но если базу очищаешь, размер остается таким же RuVarez БД в Delphi 1 23.09.2010 18:09
Запись даты в FireBird Lokos БД в Delphi 11 23.06.2010 07:53
запись пустого значения в блоб поле в FireBird Lokos БД в Delphi 0 23.06.2010 07:01