aodquery 设置为
CursorType:=ctUnspecified;
LockType:=ltBatchOptimistic;
批量查询出记录以后,用delete方法把记录全部删除再如下方法保存
with adoquery do
begin
 edit;
 post;
 updatebatch();
end;
不能保存,也就是没有删除记录,如果只删除部分记录则可以保存。或是全部删除后再添加也可以保存。
以上现象是什么原因。我用的是delphi 7

解决方案 »

  1.   


    CursorType:=clUseClient;
    LockType:=ltBatchOptimistic;procedure TFmain.Action_DeleteExecute(Sender: TObject);
    var i : Integer;
    begin
      
      if ADOQuery.IsEmpty then Exit;  if DBGrid.SelectedRows.Count=0 then begin //选择的记录数为零
        if messagebox(0,'真的删除当前记录吗?','警告',MB_OKCANCEL+MB_ICONQUESTION)=2 then Exit;
      end
      else
        if if messagebox(0,'真的删除当前记录吗?','警告',MB_OKCANCEL+MB_ICONQUESTION)=2 then Exit;
      if ADOQuery.Connection.InTransaction  then ADOQuery.Connection.RollbackTrans;
      ADOQuery.Connection.BeginTrans;
      ADOQuery.DisableControls;
      if ((DBGrid.SelectedRows.Count=0) or (DBGrid.SelectedRows.Count=1)) then
        ADOQuery.Delete
      else
       for i:=0 to DBGrid.SelectedRows.Count-1 do begin
           ADOQuery.GotoBook(pointer(DBGrid.SelectedRows.Items[i]));
           ADOQuery.Delete;
       end;
      try
        ADOQuery.UpdateBatch;
        ADOQuery.Connection.CommitTrans;
      except
        ADOQuery.Connection.RollbackTrans;
        ADOQuery.CancelUpdates;
        messagebox(0,'删除记录出错!','错误',MB_ICONERROR);
      end;
      ADOQuery.EnableControls;
    end;