clientdateset 的 ApplyUpdates的问题
Dmain.cdsC.First;
while not Dmain.cdsC.Eof do
begin
if (条件) then
begin
//其他操作
Dmain.cdsC.Delete;//删除在数据库中已经存在的记录
end
else
if (条件) then
begin
//其他操作
Dmain.cdsC.Next;
end;
end;
Dmain.cdsC.RecordCount;//记录数正确,为删除后的数据集的记录数,例如原来Dmain.cdsC有100条,删除20条,现在为80条
Dmain.cdsC.First;
while not Dmain.cdsC.Eof do //查看cdsC中确实已无主键重复的记录
begin
sID := Dmain.cdsC.FieldByName(ID).AsString;
Dmain.cdsC.Next;
end;
Dmain.cdsC.ApplyUpdates(0);//报错,提示不唯一,主键冲突
{ //以下语句可以执行,但实际插入到数据库中的记录为160条,为重复的80条,像是执行了两次ApplyUpdates
Dmain.Qrya.Close;
Dmain.Qrya.SQL.Clear;
Dmain.Qrya.SQL.text:='ALTER TABLE BZK_ZK_CARDINFO DISABLE CONSTRAINT CARD_INFO_KEY_YUANID';
Dmain.Qrya.ExecSQL(TRUE);
Dmain.Qrya.ApplyUpdates(0);
}
困惑中...,不知何解