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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2011, 02:05   #1
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
Стрелка Параметры для ADOQuery1.SQL.Add('UPDATE ...

всем привет
подскажите, что не так в моем коде, он не хочет обновлять строку в таблице
хочет какие то параметры, ток не поиму куда и как
Код:
  Filter := Form2.ADOQuery1.FieldByName('Name_').AsString;
  Form2.ADOQuery1.Active := False;
  Form2.ADOQuery1.SQL.Clear;
  Form2.ADOQuery1.SQL.Add('UPDATE '+TableNames);
  Form2.ADOQuery1.SQL.Add('SET STime_='+MaskEdit1.Text+',FTime_='+MaskEdit2.Text+',Name_='+sEdit3.Text+',Work_='+sMemo1.Text);
  Form2.ADOQuery1.SQL.Add('WHERE Name_='+Filter);
  Form2.ADOQuery1.ExecSQL;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 17.04.2011, 02:22   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) все текстовые константы должны быть в апострофах.
примерно так:
Код:
Form2.ADOQuery1.SQL.Add('SET STime_='+MaskEdit1.Text+',FTime_='+MaskEdit2.Text+',Name_='+QuotedStr(sEdit3.Text)+',Work_='+sMemo1.Text);
  Form2.ADOQuery1.SQL.Add('WHERE Name_='+QuotedStr(Filter));
насчёт остальных полей - STime_ FTime_ Work_ - тут уж сами разбирайтесь, смотрите какого они типа. Скорее всего, константы тоже надо экранировать апострофами...

2) раз просит параметры, возможно, что в ADOQuery1 заданы параметры.
Зайдите в parameters - посмотрите, что там..

3) настоятельно рекомендую не жадничать, кинуть на форму ещё один ADOQuery и использовать его для операций изменения данных (насколько я могу судить, ADOQuery1 служит для выборки данных из таблицы..)

ну и последнее. Если запросы по обновлению один и тот же, то я бы рекомендовал посмотреть в сторону использования параметрического запроса (т.е. использовать параметры).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.04.2011, 02:41   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
2) раз просит параметры, возможно, что в ADOQuery1 заданы параметры.
Зайдите в parameters - посмотрите, что там..
параметров нет, все, начиная с базы, таблич создаю програмно

Цитата:
3) настоятельно рекомендую не жадничать, кинуть на форму ещё один ADOQuery и использовать его для операций изменения данных (насколько я могу судить, ADOQuery1 служит для выборки данных из таблицы..)
там функционала столько нет), не хочеца лишнии компоннт задеиствовать

вот так без ошибки сохраняет, только в столбец с именем добовляет: ' '
тоеать было myName стало 'myName'
Код:
  Filter := Form2.ADOQuery1.FieldByName('Name_').AsString;
  Form2.ADOQuery1.Active := False;
  Form2.ADOQuery1.SQL.Clear;
  Form2.ADOQuery1.SQL.Add('UPDATE '+TableNames);
  Form2.ADOQuery1.SQL.Add('SET STime_="'+MaskEdit1.Text+'",FTime_="'+MaskEdit2.Text+'",Name_="'+QuotedStr(sEdit3.Text)+'",Work_="'+sMemo1.Text);
  Form2.ADOQuery1.SQL.Add('"WHERE Name_='+QuotedStr(Filter));
  Form2.ADOQuery1.ExecSQL;
Добавлено
нашел почему
как я понял ета команда QuotedStr помещает строку в ковычки, убрал и все норм
Код:
  Form2.ADOQuery1.SQL.Add('SET STime_="'+MaskEdit1.Text+'",FTime_="'+MaskEdit2.Text+'",Name_="'+sEdit3.Text+'",Work_="'+sMemo1.Text);
  Form2.ADOQuery1.SQL.Add('"WHERE Name_='+QuotedStr(Filter));
Serge_Bliznykov вам спасибо

Добавлено
еще вот так можно
Код:
Form2.ADOQuery1.SQL.Add('SET STime_="'+MaskEdit1.Text+'",FTime_="'+MaskEdit2.Text+'",Name_="'+sEdit3.Text+'",Work_="'+sMemo1.Text+'"');
ADOQuery1.SQL.Add('WHERE Name_="'+Filter1+'" and STime_="'+Filter2+'"');
VirusN13

Последний раз редактировалось ArtGrek; 17.04.2011 в 11:51.
ArtGrek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADOQuery1.SQL.Add построение запроса ArtGrek БД в Delphi 3 15.04.2011 16:57
Удалить через SQL строку в таблице ADOQuery1 UNToxa БД в Delphi 2 20.03.2011 15:44
Проблема с запросом SQL ADOQuery1 UNToxa БД в Delphi 4 11.01.2011 21:46
SQL.add Grom48 БД в Delphi 2 13.12.2009 16:42
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) Schutze Помощь студентам 6 29.11.2009 22:15