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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2013, 16:39   #1
pas666
 
Регистрация: 01.05.2013
Сообщений: 4
По умолчанию ошибка синтаксиса в инструкции update

Здравствуйте! Помогите пожалуйста найти ошибку.


Код:
procedure TForm3.Button6Click(Sender: TObject);
 var id: integer;
begin
id:=datamodule1.ADOQuery1.FieldByName('Код_абонента').AsVariant;
datamodule1.ADOQuery1.Close;
datamodule1.ADOQuery1.SQL.Clear();
datamodule1.ADOQuery1.SQL.Add(' update [Абоненты] set ( [Фамилия]="' + Edit7.Text + '",[Имя]="' + Edit8.Text + '",[Отчество]="' + Edit9.Text + '",[ФИО_контактного_лица]="' + Edit10.Text + '", [Телефон_домашний]="' + Edit11.Text + '", [Телефон_сотовый]="' + Edit1.Text + '", [e-mail]="' + Edit13.Text + '", [Квартира/Офис]="' + Edit15.Text + '",[Адрес_прописки]="' + Edit19.Text + '", [Квартира/Офис_по_прописки]="' + Edit20.Text + '",'+
'[Индекс_прописки]="' + Edit21.Text + '", [Адрес_почтовый]="' + Edit22.Text + '", [Квартира/Офис_почтовый]= "' + Edit23.Text + '", [Индекс_почтовый]="' + Edit24.Text + '",[Дата_рождения]="' + DateToStr(datetimepicker2.Date) + '", [Место_рождения]="' + Edit25.Text + '",'+
'[Название_документа]="' + combobox8.Text + '", [Серия_документа]="' + Edit26.Text + '", [Номер_документа]="' + Edit27.Text + '", [Дата_выдачи]="' + DateToStr(datetimepicker3.Date) + '", [Кем_выдан_документ]="' + Edit28.Text + '", [ФИО_предст_контр_в_подписи]="' + Edit29.Text + '",[Контрагент]="' + Edit10.Text + '"  where [Код_абонента] = "'+inttostr(id)+'") ');

datamodule1.ADOQuery1.ExecSQL;
datamodule1.ADOQuery1.Open; //показывает на эту строку и выдаёт ошибка синтаксиса в инструкции update

 with DataModule1.TDogovoraFizik do
begin
Edit;
FieldByName('Номер_договора').AsVariant := trim(Edit12.Text);
FieldByName ('Код_представителя').AsVariant:=datamodule1.TPredstaviteli.FieldByName('Код_представителя').AsVariant;
FieldByName ('Код_абонента').AsVariant:=datamodule1.ADOQuery1.Fields[0].Value;
FieldByName ('Код_адреса').AsVariant:=datamodule1.ADOQuery2.FieldByName('Код_адреса').AsVariant;
FieldByName('Код_тарифа_интернет').AsVariant:=datamodule1.TTarifiInternet.FieldByName('Код_тарифа_интернет').AsVariant;
Post;
end;
         MessageBox(0, PChar('Запись отредактирована'), PChar(''),
      (MB_OK + MB_ICONINFORMATION));


    datamodule1.ADOQuery1.Close;
  datamodule1.ADOQuery1.SQL.Clear();
     datamodule1.ADOQuery1.SQL.Text:='select * from Договор_интернет_физик ';
   datamodule1.ADOQuery1.Open;

 end;
pas666 вне форума Ответить с цитированием
Старый 02.11.2013, 16:50   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

весь код одна сплошная ошибка
eval вне форума Ответить с цитированием
Старый 02.11.2013, 17:06   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
set (
Скобку не надо.
Цитата:
[Фамилия]="' + Edit7.Text + '"
Ковычки скорее всего для твоей СУБД должны быть одинарными, значит:
Код:
...[Фамилия]=' + QuotedStr(Edit7.Text) + ...
И так для остальных строковых.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.11.2013, 17:49   #4
pas666
 
Регистрация: 01.05.2013
Сообщений: 4
По умолчанию

Stilet Спасибо вам огромное!
pas666 вне форума Ответить с цитированием
Старый 02.11.2013, 18:09   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Код:
datamodule1.ADOQuery1.ExecSQL;
datamodule1.ADOQuery1.Open; //показывает на эту строку и выдаёт ошибка синтаксиса в инструкции update
это ошибка!

Запомните, если изменяете данных (это конструкции SQL - Update, Delete, Insert) тогда вызывайте метод ExecSQL;
Когда выбираете данные с помощью SQL SELECT - тогда вызывайте метод Open;

Но никогда нельзя вызывать их вместе!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.11.2013, 19:25   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Но никогда нельзя вызывать их вместе!
Кстати да. Вообще я с eval-ом согласен. Код требует срочного перерождения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2013, 14:13   #7
pas666
 
Регистрация: 01.05.2013
Сообщений: 4
По умолчанию

я новичок в этом деле, диплом делаю, как то работает и то хорошо. Возникла ещё проблема(( Редактирует только первую запись, а не текущую
pas666 вне форума Ответить с цитированием
Старый 04.11.2013, 15:40   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Редактирует только первую запись
Кто? запрос или твой этот TDogovoraFizik?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2013, 21:54   #9
pas666
 
Регистрация: 01.05.2013
Сообщений: 4
По умолчанию

очень странно редактируются записи: если я добавляю запись и после сразу же редактирую её, то все изменения сохраняются нормально;
если же я сразу запускаю проект, выбираю уже добавленную запись для редактирования, то изменения сохраняются не в той строке, которую я выбрала для редактирования, а изменения сохраняются в первой строке
pas666 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка синтаксиса update Krais БД в Delphi 11 08.09.2012 21:41
Ошибка синтаксиса в инструкции Update BioNoob БД в Delphi 8 19.06.2012 09:41
Ошибка синтаксиса в инструкции INSERT INTO Crystal2002 C/C++ Базы данных 5 27.04.2012 21:49
Ошибка синтаксиса в инструкции insert into sectorb БД в Delphi 5 24.11.2011 09:23
ошибка синтаксиса в инструкции create table boshki Помощь студентам 6 02.06.2011 18:36