请问在我ClientDataSet的AfterPost里,我校验后发现数据输入不对,然后用RevertRecord撤消,但是我如何让焦点返回到原来那条记录上,进

  • 主题发起人 主题发起人 xhyph
  • 开始时间 开始时间
X

xhyph

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在我ClientDataSet的AfterPost里,我校验后发现数据输入不对,然后用RevertRecord撤消,但是我如何让焦点返回到原来那条记录上,进行重新编辑?(50分)<br />当编辑离开后
我在AfterPost后校验,
这时候焦点已经在下条记录上,我虽然可以校验,可以让RevertRecord撤消,
但是如何让焦点返回进行编辑呢?
 
别用RevertRecord,用UndoLastChange(True),就回到刚修改过的记录
 
你也可以先用bookmark 记住当前的记录
 
嘻嘻,方法还不少,我也提供一个。
var
i: Integer;
....
.....OnbeforePost
begin
i := cds.savePoint;
...
....OnAfterPost
begin
if not XXXXX then
cds.SavePoint := i;
...

 
都没有用,,,都回不了的,不信你们去试试
 
呵呵大意了。
试试这个方法
在AfterPost中加入下面的代码
if DataSet.FieldByName('XXXXXX').Value = '0' then
begin
Raise EDatabaseError.Create('错误提示');
end;
直接用Raise的方法来阻挡记录指向下一条。
 
这办法不错,,加分
 
后退
顶部