错误码是 ‘table is read only’,or ‘不能更新操作’,我用了tdatabase,tquery, tupdatespl。但是我把query1.cachedupdate设为 false时就能保存,但我想采用事务处理主表和从表,便于控制。就小弟苦想了一天,不得其果。麻烦各位,给个例子。

解决方案 »

  1.   

    如果cachedupdate为true,要用ApplyUpdates来提交修改,下面是例子:
    用Database1连接数据库并完成事务处理,CustomerQuery连接Database1procedure TForm1.ApplyButtonClick(Sender: TObject);
    begin
      with CustomerQuery do
      begin
      Database1.StartTransaction; //开始事务处理
        try
          ApplyUpdates;  //提交缓冲修改
          Database1.Commit; //事务提交
        except
          Database1.Rollback; //出现异常,事务回滚
        raise; //抛出异常,防止下面的CommitUpdates执行
        end;
      CommitUpdates; //成功后,清除CustomerQuery的缓冲区,这一点很重要
      end;
    end;