三层中TClientDataSet刷新问题。
希望点TDBNavigator刷新操作时,判断是否修改数据,如果修改了,则选择是否保存数据。通过跟踪代码,先直接跳过(也就是修改数不大于0),弹出英文提示(大意是刷新操作前要更新数据),再点TDBNavigator的刷新按钮就正常了。问题是第一次点时,ChangeCount不大于0,再点一次ChangeCount就大于0了。问题何在?
procedure TFormUser.DBNavigatorUserBeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin
case Button of
nbRefresh:
begin
if DataModuleQBXZ.ClientDataSetUser.ChangeCount>0 then
begin
if (Application.MessageBox('警告:有修改的信息未保存到服务器,需要保存吗?','警告',MB_OKCANCEL) = IDOK) then
DataModuleQBXZ.ClientDataSetUser.ApplyUpdates(-1)
else
DataModuleQBXZ.ClientDataSetUser.CancelUpdates;
end;
end;
end;
end;
希望点TDBNavigator刷新操作时,判断是否修改数据,如果修改了,则选择是否保存数据。通过跟踪代码,先直接跳过(也就是修改数不大于0),弹出英文提示(大意是刷新操作前要更新数据),再点TDBNavigator的刷新按钮就正常了。问题是第一次点时,ChangeCount不大于0,再点一次ChangeCount就大于0了。问题何在?
procedure TFormUser.DBNavigatorUserBeforeAction(Sender: TObject;
Button: TNavigateBtn);
begin
case Button of
nbRefresh:
begin
if DataModuleQBXZ.ClientDataSetUser.ChangeCount>0 then
begin
if (Application.MessageBox('警告:有修改的信息未保存到服务器,需要保存吗?','警告',MB_OKCANCEL) = IDOK) then
DataModuleQBXZ.ClientDataSetUser.ApplyUpdates(-1)
else
DataModuleQBXZ.ClientDataSetUser.CancelUpdates;
end;
end;
end;
end;
if ClientDataSet1.State in [dsEdit, dsInsert] then
begin
ClientDataSet1.Post;
end;
if DataModuleQBXZ.ClientDataSetUser.Modified then
DataModuleQBXZ.ClientDataSetUser.Post;