c:=TClientDataSet.Create(nil);
c.FieldDefs:=ClientDataSet1.FieldDefs;
c.CreateDataSet;
c.Open;
c.Append;
for i:=0 to c.FieldCount-1 do begin
if c.Fields[i].FieldKind=fkdata then begin
c.Fields[i].ReadOnly:=False;
c.Fields[i].Value:=ClientDataSet1.Fields[i].Value;
end;
end;
c.Post;
c.recno:=1;
c.LogChanges:=True;
c.Delete;
之后,c.changecount还是为零,这是为什么呢?
c.FieldDefs:=ClientDataSet1.FieldDefs;
c.CreateDataSet;
c.Open;
c.Append;
for i:=0 to c.FieldCount-1 do begin
if c.Fields[i].FieldKind=fkdata then begin
c.Fields[i].ReadOnly:=False;
c.Fields[i].Value:=ClientDataSet1.Fields[i].Value;
end;
end;
c.Post;
c.recno:=1;
c.LogChanges:=True;
c.Delete;
之后,c.changecount还是为零,这是为什么呢?
解决方案 »
- 菜鸟问题:在Delphi该用那个控件实现多选?
- 用Adoquery和DbGrid显示数据,怎么在Dbgrid中把数据库中为0、1的数据显示为是否?
- ntsd 在我的程序中运行那么一下,怎么个写法
- dll中给var pchar赋值出现乱码?请大侠指教!
- pageControl 控件问题!
- 如何将两个表中的数据在同一个报表中输出?急!!!!
- 如何在给richedit 的内容进行大五码和国标码的转换时,能保持文字格式不变?
- 在一个表中有两条记录完全一样,如何对其中一条记录修改??
- 一个简单的问题
- dbedit的值相减
- 如何设置PrintDBGridEh1.AfterGridTexT.Text的字体
- waveOutReset以及waveOutPause使用后资源占用100%的问题
c.FieldDefs:=ClientDataSet1.FieldDefs;
c.CreateDataSet;
c.Open;
c.Append;
for i:=0 to c.FieldCount-1 do begin
if c.Fields[i].FieldKind=fkdata then begin
c.Fields[i].ReadOnly:=False;
c.Fields[i].Value:=ClientDataSet1.Fields[i].Value;
end;
end;
c.Post;
c.MergeChangeLog; // 加上这句就没有问题了。
c.recno:=1;
c.LogChanges:=True;
c.Delete;
if dm2.SaveData(c.Delta)<=0 then begin
这句就会出错,出现record not found or changed by another user这样的错误。很怪。
我的DataProvider.UpdateMode=upWhereKeyOnly,而且DataProvider.DataSet的第一个字段已经有标记为主键。用SaveData保存ClientDataSet1,都完全没有问题。