With query1 do
begin
close;
sql.clear;
sql.add('update bookshop 
 set booknum=booknum-:no 
where bookname=:bn');
parambyname('no').value:=strtoint(Edit1.text);
parambyname('bn').value:=edit2.text;
open;
end;

解决方案 »

  1.   

    update bookshop 
     set booknum=booknum-2 
    where bookname='c语言大全'
    肯定是没有满足条件的记录
     先试一下 select * from bookshop where bookname='c语言大全'update bookshop 
     set booknum=booknum-:no 
    where bookname=:bnparamsbyname(no).value:=strtoint(Edit1.text);
    paramsbyname(bn).value:=edit2.text;
      

  2.   

    可sql语句的问题呢?
    再sql explore中运行sql语句,根本改不了booknum的值。
    是不是access不支持sql update?
      

  3.   

    还有啊,paramsbyname好像也不能用了。
    说是没定义。
      

  4.   

    语法已经改好了。多谢大家。
    不过update语句还是不行。
    可以运行了。但是本数还是没变啊。
    怎么回事呢?
      

  5.   

    你这样
    with query1 do begin
      Active := False;
      SQL.Clear;
      SQL.Add("select booknum from book where bookname='CLanguage'");
      Active := True;
      CurrBookNum := Fields.Fields[0].AsInteger;
    end;with query2 do begin
      Active := False;
      SQL.Clear;
      SQL.Add("update book set booknum=:BookNum where bookname=:BookName");
      Parameters.ParamByName('BookNum').Value := CurrBookNum - 2;
      Parameters.ParamByName('BookName').Value := 'CLanguage';
      ExecSQL;
    end;