作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道你是否可以帮助我解决一个我似乎无法解决的非常简单的问题。
基本上,我在 Delphi 7 中创建了一个投票系统。在用户选中复选框投票"is"后,我需要通过将“是投票”字段增加一来更新我的表“规则”。
这就是问题所在,由于某种原因,表总是增加值 2 而不是 1!
请尽可能提供帮助,我对此很陌生,所以请耐心等待。
这是我的代码:(注意:“bYes”是一个带有复选框值的 bool 值。 “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;
最佳答案
根据组件设置,qry1.Active := True;
或 qry1.Open;
将再次执行 sql,并且根据组件将引发执行后附加异常。您只需在 begin .. end
block 内调用 qry1.ExecSQL;
。
begin
if byes then // omitt = True
begin
qry1.SQL.Text := 'UPDATE rules SET [Yes votes] = [yes votes] + 1 WHERE ruleid = "1"';
qry1.ExecSQL;
end
else
begin
qry1.SQL.Text := 'UPDATE rules SET [no votes] = [no votes] + 1 WHERE ruleid = "1"';
qry1.ExecSQL;
end;
end;
另一种调用方式可能是
begin
if byes then // omitt = True
qry1.SQL.Text := 'UPDATE rules SET [Yes votes] = [yes votes] + 1 WHERE ruleid = "1"'
else
qry1.SQL.Text := 'UPDATE rules SET [no votes] = [no votes] + 1 WHERE ruleid = "1"';
qry1.ExecSQL;
end;
关于SQL 更新(德尔福),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19422052/
我是一名优秀的程序员,十分优秀!