【发布时间】:2020-07-01 11:46:12
【问题描述】:
每当此代码运行时,我都会收到上述错误。该代码应该将一条记录插入到一个表中,然后从另一个表中删除记录。
for I := iMax - K to iMax do
begin
Inc(a);
with dmMenu.qryMcDonalds do
begin
SQL.Text :=
'SELECT ID, ItemID, ItemPrice, ItemCategory FROM tblCheckout WHERE ID = ' + IntToStr(I);
Open;
sItemID := Fields[1].AsString;
rItemPrice := Fields[2].AsFloat;
sItemCategory := Fields[3].AsString;
ShowMessage(IntToStr(I));
// I get the error here
SQL.Text :=
'INSERT INTO tblOrderItems (OrderItemID, OrderID, ItemID, ItemCategory, ItemPrice) VALUES ("' + sOrderID + '_' + IntToStr(a) + '"' + ', "' + sOrderID + '", "' + sItemID + '", "' + sItemCategory + '", "' + FloatToStrF(rItemPrice, ffCurrency, 10, 2) + '")';
ExecSQL;
SQL.Text := 'DELETE FROM tblCheckout WHERE ID = ' + IntToStr(I);
ExecSQL;
end; // with SQL
end; // for I
编辑:我认为问题出在“插入”部分。除最后一列外,所有列都是短文本,ItemPrice 是一种货币。我也在使用 Access
【问题讨论】:
-
注意此代码可用于SQL injection。
-
我们看不到您的屏幕 - 错误发生在哪一行?如果是“INSERT INTO ...”,请将其替换为正确参数化的 INSERT 语句,您的问题将立即消失。
-
顺便说一句,您使用的是什么 DBMS?
-
停止在 cmets 中提供详细信息,并 edit 你的问题将它们放在那里。
-
好的,我会在接下来的一个小时左右发布一个答案,显示插入的正确方法。
标签: sql delphi error-handling delphi-2010