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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2013, 23:24   #1
kolyan2288
 
Регистрация: 06.01.2013
Сообщений: 3
По умолчанию добавление записи через adoquery

Привет я новичек в разработки приложении по запросам в adoquery, можно сказать только начинаю до этого работал в adotable, как пересел на скл стало очень много вопросов, первая проблема - добавление новой записи в таблицу продукт (выдает много ошибок и добавляет две одинаковых записей)


код кнопки
Код:
 procedure TForm1.Button1Click(Sender: TObject);
begin
   DataModule2.ADOQueryProduct.Close;
   DataModule2.ADOQueryProduct.Parameters.ParamByName('ID').Value:=Form1.Edit2.Text;
   DataModule2.ADOQueryProduct.Parameters.ParamByName('PRODUCT_NAME').Value:=Form1.Edit3.Text;
   DataModule2.ADOQueryProduct.Parameters.ParamByName('DRAWING').Value:=Form1.Edit4.Text;
   try
   DataModule2.ADOQueryProduct.ExecSQL;       //выполняем запрос методом  ExecSQL
   except
    ShowMessage('Ошибка при добалении данных!,'+#13+'Попробуйте еще раз!');
    Exit;
   end;
   //обновляем набор данных
   DataModule2.ADOQueryProduct.Close;
   DataModule2.ADOQueryProduct.open;
end;

описание скл в квери
Код:
INSERT INTO product (id, product_name, drawing) VALUES  (:id, :product_name, :drawing);
ошибки



после нажатии продолжить



подскажите что я делаю не так буду очень благодарен
kolyan2288 вне форума Ответить с цитированием
Старый 07.01.2013, 01:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

английский рекомендую хоть немножечко, но подучить..

ошибка в том, что Вы пытаетесь ОТКРЫТЬ датасет, а вместо открытия у Вас команда на изменение данных. Она не возвращает набор данных (о чём и написано в тексте ошибки).

запомните, когда в запросе есть SELECT, тогда делаете датасету.Open
если же (как в вашем случае) нужно выполнить команду, тогда (вместо DataModule2.ADOQueryProduct.open):
Код:
   DataModule2.ADOQueryProduct.ExecSQL;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.01.2013, 22:18   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

абсолютно согласен с Serge. немного "проилюстрирую" написанное выше:
Код:
 procedure TForm1.Button1Click(Sender: TObject);
begin
   DataModule2.ADOQueryProduct.Close;
   DataModule2.ADOQueryProduct.SQL.Text := 'INSERT INTO product (id, product_name, drawing) VALUES  (:id, :product_name, :drawing)';
   DataModule2.ADOQueryProduct.Parameters.ParamByName('ID').Value:=Form1.Edit2.Text;
   DataModule2.ADOQueryProduct.Parameters.ParamByName('PRODUCT_NAME').Value:=Form1.Edit3.Text;
   DataModule2.ADOQueryProduct.Parameters.ParamByName('DRAWING').Value:=Form1.Edit4.Text;
   try
   DataModule2.ADOQueryProduct.ExecSQL;       //выполняем запрос методом  ExecSQL
   except
    ShowMessage('Ошибка при добалении данных!,'+#13+'Попробуйте еще раз!');
    Exit;
   end;
   //обновляем набор данных
   DataModule2.ADOQueryProduct.Close;
   DataModule2.ADOQueryProduct.SQL.Text := 'SELECT * FROM product';
   DataModule2.ADOQueryProduct.Open;
end;
а еще поле ID лучше исключить из запроса и сделать его автоинкрементным и уникальным (во избежание будущим проблем)
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записи в таблицу через AdoQuery natt23 БД в Delphi 2 30.10.2012 12:21
Добавление записи через форму Studbgc Microsoft Office Access 1 27.04.2012 15:36
Добавление записи в ADOQuery. lovetolaugh БД в Delphi 10 11.06.2011 19:07
Добавление записи в БД средствами ADOQuery. lovetolaugh Помощь студентам 0 16.05.2011 19:02
Добавление записи через FIBDataSet Lokos БД в Delphi 13 04.05.2010 12:32