DataSetProvider.dataset:= adoquery.
if clientDataset.changeCount > 0 then
begin
clientDataset.post;
DataSetProvider.ApplyUpdates(clientDataset.delta,0, outError);
end.请问大家有没有碰到数据有时保存不了的问题?如有,一般是如何解决的?
我有时会碰到这样的问题,不论你再怎么增加修改。
只有退出那界面再进去再增加修改才可以。
当然出现这种情况并不多。
if clientDataset.changeCount > 0 then
begin
clientDataset.post;
DataSetProvider.ApplyUpdates(clientDataset.delta,0, outError);
end.请问大家有没有碰到数据有时保存不了的问题?如有,一般是如何解决的?
我有时会碰到这样的问题,不论你再怎么增加修改。
只有退出那界面再进去再增加修改才可以。
当然出现这种情况并不多。
if clientDataset.changeCount > 0 then
begin
try
clientDataset.post;
DataSetProvider.ApplyUpdates(clientDataset.delta,0, outError);
except
;
end;
end.
if clientDataset.changecount>0 then
clientDataset.post;
try
DataSetProvider.ApplyUpdates(clientDataset.delta,0, outError);
result:= true;
except
result:= False;
raise;
end;它也没有抱什么错,奇怪了。而且只是偶尔会出错,退出界面再进去重新输入就可以了。
很奇怪。
if clientDataset.changecount>0 then
clientDataset.post;
try
DataSetProvider.ApplyUpdates(clientDataset.delta,-1, outError); //第二个参数改为-1
result:= outError=0; //只有outError为0才没有错误
except
result:= False;
raise;
end;
if clientDataset.changecount>0 then
clientDataset.post;
try
DataSetProvider.ApplyUpdates(clientDataset.delta,0, outError);
result:= true;
except
result:= False;
raise;
end; //---------
先POST , 再判断changecount>0 then applyupdates....
你读DELTA的时候,如果为EMPTY会出个异常。不为空(如果数据集未保存,会自动POST一下的)
应该是这样:
if clientDataset.changecount>0 then
begin
clientDataset.post;
try
DataSetProvider.ApplyUpdates(clientDataset.delta,0, outError);
result:= true;
except
result:= False;
raise;
end;
end;
该属性决定更新语句的产生是有adoquery产生还是由TClientDatset产生。在applyupdates后,判断一下TClientDataset.changecount,
然后再调用TClientDataset.MergeChangeLog;
if clientDataset.changeCount > 0 then
begin
clientDataset.post;
DataSetProvider.ApplyUpdates(clientDataset.delta,0, outError);
clientDataset.MergeChangeLog;
end.
如用SQL更新,很麻烦吧.