if (FDataSet <> nil) and (FDataSet.RecordCount > 0) then
if MessageDlg('是否确定要删除此记录', mtInformation, [mbOK, mbCancel], 0) = mrOK then
begin
FDataSet.Delete;
FDataSet.post;
FDataSet.ApplyUpdates(-1);
end;
if MessageDlg('是否确定要删除此记录', mtInformation, [mbOK, mbCancel], 0) = mrOK then
begin
FDataSet.Delete;
FDataSet.post;
FDataSet.ApplyUpdates(-1);
end;
"Dataset not in edit or insert mode"
if (FDataSet <> nil) and (FDataSet.RecordCount > 0) then
if MessageDlg('是否确定要删除此记录', mtInformation, [mbOK, mbCancel], 0) = mrOK then
begin
FDataSet.Delete;
FDataSet.ApplyUpdates(0);
end;
很好解决:先产生一个错误处理窗口(Reconcle Error Dialog),再在clientdataset的OnReconcileError事件过程中写代码.
HandleReconcileError(Dataset,UpdateKind,E)
这样,在保存出错时,就会弹出一个窗口,很清楚的显示了出错的原因。据我的经验,不能删除好多时候是由于表没设主键引起的。
这时候,可修改应用服务器的Tdatasetprovider的updatemode属性来解决。