我收到一个语法错误(缺少运算符)在查询表达式中,如下所示.
请任何人都可以协助,代码运行良好,除了当我更新一个特定的“请求”。
qryRequests.Close;
qryRequests.SQL.Clear;
qryRequests.SQL.Add('Update tblRequest SET State = "' + cmbStates.Text + '"');
qryRequests.SQL.Add('Update tblRequest SET AssignmentGroup = "' + cmbAssignmentF.Text + '"');
qryRequests.SQL.Add('WHERE RequestNumber = "' + edtREQNum.Text + '"');
qryRequests.ExecSQL;
qryRequests.Close;
qryRequests.SQL.Clear;
qryRequests.SQL.Add('SELECT * FROM tblRequest');
qryRequests.Open;
我试过了,添加了“QuoteStr”,看看这是否能解决问题,然而,它只会产生更多。
2条答案
按热度按时间r8xiu3jd1#
您的SQL语法不正确。为了补充@June7提供的完美答案,您可以在SQL中使用参数。这可以防止SQL注入,也可以使代码更具可读性。
czq61nw12#
虽然Access查询设计器会添加分号,但以编程方式执行SQL时不需要分号。Access无法在一条语句中执行多个SQL查询。我认为您只希望为匹配RequestNumber的记录更新这两个字段。请确保在WHERE前面或上一行末尾的空格中编写代码,以便在编译时连接的部分不会一起运行。如果担心SQL注入,查看Delphi Adoquery SQL add or text
如果字段为文本类型,请使用撇号分隔符,如果为数字,则不使用,日期/时间字段使用#分隔符。
顺便说一句,如果这两个UPDATE操作都可以执行,结果将是更新具有相同State值的每条记录,并且只有与RequestNumber匹配的记录才会更新AssignmentGroup。如果这确实是您想要的,则必须执行两个单独的UPDATE操作。