@animr

Как составить SQL — запрос, правильно на объявление данных в базе *dbf?

Люди помогите составить SQL - запрос правильно, если я пишу таким образом код:

dmContanierIcon.quAdmissionProduct.Active := False;
dmContanierIcon.quAdmissionProduct.Close;
dmContanierIcon.quAdmissionProduct.SQL.Clear;
dmContanierIcon.quAdmissionProduct.SQL.Text := 'UPDATE dbt_AdmissionProduct SET p_id = '+IntToStr(varFirstRecId)+' WHERE p_product = "'+varArticleUpdateId+'"';
dmContanierIcon.quAdmissionProduct.ExecSQL;

//dmContanierIcon.quAdmissionProduct.Open;
dbgrdAdmissionProduct.DataSource.DataSet.Next;

у меня выходит следующая ошибка:
993ad0244b8c4ba1bead6101238c8628.png

а если раскомментировать
dmContanierIcon.quAdmissionProduct.Open;
выходит след. ошибка:
6726a8f79c584d34a82ba758af22884e.png

подскажите пожалуйста как правильно сделать ... Спасибо .
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
yarosroman
@yarosroman
C# the best
Использовать вместо Open, ExecSQL и все
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@iloer
ну во первых
dmContanierIcon.quAdmissionProduct.SQL.Text := 'UPDATE dbt_AdmissionProduct SET p_id = '+IntToStr(varFirstRecId)+' WHERE p_product = "'+varArticleUpdateId+'"';

было бы корректнее записать как:
dmContanierIcon.quAdmissionProduct.SQL.Text := UPDATE dbt_AdmissionProduct SET p_id = :varFirstRecId WHERE p_product = :varArticleUpdateId;
dmContanierIcon.quAdmissionProduct.ParamByName('varFirstRecId').AsInteger := varFirstRecId;
dmContanierIcon.quAdmissionProduct.ParamByName('varArticleUpdateId').AsString := varArticleUpdateId;
dmContanierIcon.quAdmissionProduct.ExecSQL;


а по поводу ошибки, то зачем вам после Update делать Next? метод ExecSQL не возвращает Dataset. об этом Delphi вам и сообщает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы