【发布时间】:2013-10-17 08:48:15
【问题描述】:
我想知道你是否可以帮助我解决一个我似乎无法解决的非常简单的问题。
基本上,我在 Delphi 7 中创建了一个投票系统。在用户选中复选框以投票“是”后,我需要通过将“是投票”字段增加 1 来更新我的表格“规则”。
这就是问题所在,出于某种原因,表格总是增加了 2 而不是 1 的值!
请尽一切可能提供帮助,我对此很陌生,所以请耐心等待。
这是我的代码: (注意:“bYes”是一个带有复选框值的布尔值。 “RuleID”是链接到要投票的特定规则的字段名)
if bYes = True then
begin
qry1.Active := False;
qry1.SQL.Text := 'UPDATE rules SET [Yes votes] = [yes votes] + 1 WHERE ruleid = "1"';
qry1.ExecSQL;
qry1.Active := True;
end
else
qry1.close;
qry1.SQL.Text := 'UPDATE rules SET [no votes] = [no votes] + 1 WHERE ruleid = "1"';
qry1.ExecSQL;
qry1.Open;
【问题讨论】:
-
除了在 else 分支中缺少
begin .. end之外,还应该删除qry1.Open或qry1.Active=True,因为这会根据组件导致额外的 SQL 执行,并且取决于组件到错误。您只需要使用 qry1.ExecSQL。 -
@bummi:这就是原因:
Problem : the table is always increased by a value of 2 instead of 1!。您的评论,应该是答案。 -
安全提示:不要忘记使用 SQL 参数 ;)