我在查询之前先判断:
IF dsbTERMINAL_UNION_DT.DataSet.UpdatesPending THEN
dsbTERMINAL_UNION_DT.DataSet.Cancel;
然后查询,查询完之后判断:
IF NOT dsbTERMINAL_UNION_DT.DataSet.Active THEN
dsbTERMINAL_UNION_DT.DataSet.Open;
然后就是执行难、:
procedure TTERMINAL_CLEAR_FORMDOC.dsbTERMINAL_UNION_DTAfterOpen(DataSet: TDataSet);
begin
dsbTERMINAL_UNION_DT.DataSet.First;
WHILE NOT dsbTERMINAL_UNION_DT.DataSet.Eof DO
BEGIN
dsbTERMINAL_UNION_DT.DataSet.Edit;
dsbTERMINAL_UNION_DT.DataSet.FieldByName('SAVEORNOT').AsInteger := 0;
dsbTERMINAL_UNION_DT.DataSet.FieldByName('DELETEORNOT').AsInteger := 0;
dsbTERMINAL_UNION_DT.DataSet.Next;
END;
end;
是否能把你具体的操作描述清楚下呢?
从你1楼描述的来看
我在查询之前先判断:
IF dsbTERMINAL_UNION_DT.DataSet.UpdatesPending THEN
dsbTERMINAL_UNION_DT.DataSet.Cancel;
然后查询,查询完之后判断:
IF NOT dsbTERMINAL_UNION_DT.DataSet.Active THEN
dsbTERMINAL_UNION_DT.DataSet.Open;
-----------------
这里这个数据集已经是open了,你这个open的代码不会被执行吧。也就触发不了dsbTERMINAL_UNION_DTAfterOpen这个事件。
另外你要取消更新操作的话
IF dsbTERMINAL_UNION_DT.DataSet.UpdatesPending THEN
dsbTERMINAL_UNION_DT.DataSet.Cancel;//这里应该是用cancelupdates。