if (ADOQuery1->UpdateStatus() == usUnmodified) return;
ADOQuery1->UpdateBatch(arAll);
UpdateStatus只能判断当前记录(当前行)的状态,不能判断整个记录集的状态啊.
ClientDataSet1控件有ChangeCount属性可以判断整个数据集的变动数。
if( ClientDataSet1->ChangeCount)
ClientDataSet1->ApplyUpdates(-1);
FDQuery控件也有ChangeCount
FDQuery1->ChangeCount;
FDQuery1->UpdateStatus();
FDQuery1->ApplyUpdates(-1);
1) duplicate a record - just copy the current record to the end of the dataset procedure TMyADODataSet.DuplicateRecord; var r: TMyADODataSet; i: integer; begin if Active and not IsEmpty then begin r := TMyADODataSet.Create(nil); r.Clone(Self,ltBatchOptimistic); r.SetRecNo(Self.RecNo); Append; for i := 0 to Fields.Count - 1 do if Fields[i].FieldKind = fkData then Fields[i].Value := r.Fields[i].Value; r.Close; r.Free; end; end; 2) Returns the number of pending records - to use with batchupdate mode function TMyADODataSet.GetModifiedCount: integer; var r: _RecordSet; begin if Active and (LockType = ltBatchOptimistic) then begin r := Recordset.Clone(adLockBatchOptimistic); r.Filter := adFilterPendingRecords; Result := r.RecordCount; r.Close; end else Result := -1; end;
c++builder 要#include <adoint.h>