Ошибка при ApplyUpdates

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ошибка при ApplyUpdates

Сообщение Pavidlo » 02.03.2011 08:16:31

Здравствуйте, не могу понять в чем ошибка. Есть таблица адрес(база MySql), она отображается в DBGrid на одной форме, при нажатии на кнопочку добавить я перехожу на другую форму с Dbedit-ами, там ввожу необходимые данные нажимаю кнопочку сохранить и выпадает ошибка...
Код на кнопку добавить:
Код: Выделить всё
procedure TForm1.BitBtn6Click(Sender: TObject);
Var dat:Tdatetime;
begin
     dat:=Now;
     Form1.SQLAdres.Insert;
     Form5.Panel2.Visible:=true;
     Form5.DateEdit1.Date:=dat;
     Form5.ShowModal;
end;

процедура на кнопку сохранить:
Код: Выделить всё
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
     if DBEdit1.Text<>'' then
        if DBEdit2.Text<>'' then
           if DBEdit3.Text<> '' then
              if DBEdit4.Text<>'' then
                 if DBEdit5.Text<>'' then
                    if DBEdit6.Text<>''then
                    begin
                         //ShowMessage(Form1.SQLQuery1.FieldValues['id_code']);
                         Form1.SQLAdres.FieldValues['id_code']:=Form1.SQLQuery1.FieldValues['id_code'];
                         Form1.SQLAdres.Post;
                         Form1.SQLAdres.ApplyUpdates;
                         Form5.Close;
                    end
                    else
                    begin
                         Memo1.Visible:=true;
                         Memo1.Lines.Add('Поле Дом не может быть пустым');
                    end     
                 .......

Если закоменить строчку Form1.SQLAdres.ApplyUpdates; то данные сохраняться и будут отображаться в DBGrid, но в базу не сохраняться.
Убираем комент и на этой строчки вот такая ошибка
ошибка.JPG

Может кто-нибудь знает в чем проблема?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Pavidlo
новенький
 
Сообщения: 41
Зарегистрирован: 16.02.2011 16:04:49

Re: Ошибка при ApplyUpdates

Сообщение Kitayets » 02.03.2011 12:12:53

В сообщении об ошибке явно написано, что проблема с синтаксисом SQL.

Если в него внимательно посмотреть, то видно, что один из столбцов таблицы называется index. index - же является ключевым словом для многих sql серверов.

Соответственно решение:
1. экранировать название столбца. Как? - это прочитать в документации к MySQL, но обычно достаточно прописать в кавычках, или в []. Но нужно обратить внимание, если пишешь идентификатор в кавычках, то включается "реигистрозависимость", т.е. если столбец при создании назывался Index, то в sql выражении от должен быть указан соответственно "Index".
2. если вставляешь все значения записи, то имена столбцов можно не указывать. Просто пишешь INSERT INTO tablename VALUES (...);
3. стараться не использовать для объектов БД зарезервированные слова SQL.
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: Ошибка при ApplyUpdates

Сообщение Pavidlo » 02.03.2011 13:46:22

Спасибо, теперь буду знать)
Pavidlo
новенький
 
Сообщения: 41
Зарегистрирован: 16.02.2011 16:04:49


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

Рейтинг@Mail.ru
cron