set语句有问题,改一下
query.Close;
query.SQL.Clear;
query.SQL.Add('update "house.db" house');
query.SQL.Add('set house.status=house.status+1');
query.SQL.Add('where house.rno=:rnoref');
query.ParamByName('rnoref').asinteger:=rno;
query.Prepare;
query.Open;

解决方案 »

  1.   

    还有错误,应该调用ExecSQL方法才对。
    query.Close;
    query.SQL.Clear;
    query.SQL.Add('update "house.db" house');
    query.SQL.Add('set house.status=house.status+1');
    query.SQL.Add('where house.rno=:rnoref');
    query.ParamByName('rnoref').asinteger:=rno;
    query.Prepare;
    query.ExecSQL;
      

  2.   

    不行呀,这样改后,
    系统提示:
    error creating cursor handle.
      

  3.   

    不行呀.
    改后系统提示:
    error creating cursor handle.
      

  4.   

    应该不会的,除非你用open方法,用execsql方法就不会的。
      

  5.   

    open nad execsql 有何区别呀?
      

  6.   

    key violation??
    是怎摸了?
    不行.
      

  7.   

    open 是会返回记入集的,
    execsql  是执行sql语句 比如 update aaa set aa='aa' 
      如果你用open 就不能执行语句拉
      

  8.   

    Open方法会为返回的数据集创建一个Cursor句柄,用来操作这个数据集;
    而ExecSQL方法仅仅将SQL命令在服务器端执行,不返回数据集;
    如果在执行了ExecSQL方法之后又使用了Open方法,那么创建的Cursor句柄指向什么呢?显然没有数据集可以被错作,错误因此也产生了。
      

  9.   

    把Query的属性RequestLive置为True試試吧!
      

  10.   

    updatehousetable.Insert;
          updateroomquery.SQL.Clear;
          updateroomquery.SQL.Add('update "house.db" house');
          updateroomquery.SQL.Add('set house.status=house.status+1');
          updateroomquery.SQL.Add('where house.rno=:rnoref');
          updateroomquery.ParamByName('rnoref').asinteger:=rno;
          updateroomquery.Prepare;
          updateroomquery.execsql;
          
          updatehousetable.ApplyUpdates;
          updatehousetable.CommitUpdates;      现在系统提失错误:
          key violation.
          怎摸该呀?
          多谢你了.
      

  11.   

    不要"updatehousetable.Insert;"這一行.insert 和 update 是兩個不同的 mode
      

  12.   

    不要"updatehousetable.Insert;"這一行.insert 和 update 是兩個不同的 mode
      

  13.   

    什么都不用,只要:
    updateroomquery.SQL.Clear;
    updateroomquery.SQL.Add('update "house.db" house');
    updateroomquery.SQL.Add('set house.status=house.status+1');
    updateroomquery.SQL.Add('where house.rno=:rnoref');
    updateroomquery.ParamByName('rnoref').asinteger:=rno;
    updateroomquery.ExecSql;ok,
    要显示数据就重新open。
      

  14.   

    请问,不用parambyname,想提高一下sql语句的查询速度!应该用什么办法处理整形变量在sql语句中的使用!
    updateroomquery.ParamByName('rnoref').asinteger:=rno;