@animr

Почему выходит это ошибка?

Друзья помогите понять, что не так в коде, почему выходит ошибка "invalid use of keyword. Token: `dbt_AdmissionProduct`".

procedure TfAddProduct.sbAddClick(Sender: TObject);
var
varNameSelectProduct : String;
varCount : Integer;
varId : Integer;
varPrice : Real;
varSumPrice : Real;

begin
varNameSelectProduct := edNameSelectProduct.Text;
varCount := StrToInt(edCount.Text);
varPrice := StrToFloat(edPrice.Text);
varSumPrice := varCount * varPrice;

dmContanierIcon.quAdmissionProduct.Active := False;
dmContanierIcon.quAdmissionProduct.Close;
dmContanierIcon.quAdmissionProduct.SQL.Clear;
dmContanierIcon.quAdmissionProduct.SQL.Add('INSERT INTO `dbt_AdmissionProduct` (');
dmContanierIcon.quAdmissionProduct.SQL.Add('`p_product`,');
dmContanierIcon.quAdmissionProduct.SQL.Add('`p_count`,');
dmContanierIcon.quAdmissionProduct.SQL.Add('`p_price`,');
dmContanierIcon.quAdmissionProduct.SQL.Add('`p_sumPrice`)');

dmContanierIcon.quAdmissionProduct.SQL.Add('VALUES (');
dmContanierIcon.quAdmissionProduct.SQL.Add(':varNameSelectProduct,');
dmContanierIcon.quAdmissionProduct.SQL.Add(':varCount,');
dmContanierIcon.quAdmissionProduct.SQL.Add(':varPrice,');
dmContanierIcon.quAdmissionProduct.SQL.Add(':varSumPrice');

dmContanierIcon.quAdmissionProduct.ParamByName('varNameSelectProduct').AsString := varNameSelectProduct;
dmContanierIcon.quAdmissionProduct.ParamByName('varCount').AsInteger := varCount;
dmContanierIcon.quAdmissionProduct.ParamByName('varPrice').AsFloat := varPrice;
dmContanierIcon.quAdmissionProduct.ParamByName('varSumPrice').AsFloat := varSumPrice;
dmContanierIcon.quAdmissionProduct.Open;
dmContanierIcon.quAdmissionProduct.Active := True;
end;

выходит следующая ошибка: 9d7c6588436848318ea472198d094f5c.png
  • Вопрос задан
  • 318 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Ошибка в SQL. Обратные кавычки, ЕМНИП, расширение MySQL; на других СУБД поля «закавычиваются» квадратными скобками. Попробуй [dbt_AdmissionProduct] или вообще убери эти кавычки.

Ну и ещё вижу ошибку — запрос не закончен, и в этом может быть дело.

Ах да. Писать SQL вот таким образом — ад редкостный. Я бы написал так.

const
  CRLF = #13#10;

xxx.SQL.Text := 'INSERT INTO dbt_AdmissionProduct ('  + CRLF+ 
                           'p_product, p_count…' + CRLF + …
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы