+ -
当前位置:首页 → 问答吧 → 如何在DBGridEh上定位记录?

如何在DBGridEh上定位记录?

时间:2011-09-08

来源:互联网

请教大家

查询结果记录集显示在DbGridEh上,用户选中某条记录然后点修改按钮,弹出修改界面,修改数据保存后,自动返回到DbGridEh上,并自动刷新查询结果,

问题是,刷新查询结果够,如何定位到原来的选中记录上?如果是使用BookMark,具体怎么使用呢?还是有其他方法。

谢谢!

作者: seleron   发布时间: 2011-09-08

如果是单表,没必要刷新啊,直接数据集组件的EDit...Post就立即显示了
如果是联合表,通过update更新,就要刷新了,定位方法很多,adoquery的bookmark可以,还可记录一下那条记录的id,然后adoquery的locate定位

Delphi(Pascal) code

var
  bookmark:TBookmark;
begin
  bookmark := ADOQuery1.GetBookmark;
  ......
  ADOQuery1.GotoBookmark(bookmark);
end;

作者: bdmh   发布时间: 2011-09-08

你可以试试这样:
1、保存你原来选中的记录的主键,例如自动增加的ID或是其他的唯一的键值
2、刷新之后,用与DBGridEh关联的AdoQuery的locate函数定位你之前选中的记录
例如
 AdoQuery.Locate('ID', strMainId, []);
你也可以保留多个主要信息来定位你之前选中的信息,详细的Locate使用方法,看帮助就可以了

作者: m617105   发布时间: 2011-09-08

引用 1 楼 bdmh 的回复:
如果是单表,没必要刷新啊,直接数据集组件的EDit...Post就立即显示了
如果是联合表,通过update更新,就要刷新了,定位方法很多,adoquery的bookmark可以,还可记录一下那条记录的id,然后adoquery的locate定位


Delphi(Pascal) code

var
bookmark:TBookmark;
begin
bookmark :……


单表的话,如果不刷新,原来的那个ADOQuery还是旧数据啊

DbGridEh显示的是ADOQuery1的DataSet
修改时用的是ADOQuery2

不刷新的话如何post呢?

作者: seleron   发布时间: 2011-09-08

引用 1 楼 bdmh 的回复:
如果是单表,没必要刷新啊,直接数据集组件的EDit...Post就立即显示了
如果是联合表,通过update更新,就要刷新了,定位方法很多,adoquery的bookmark可以,还可记录一下那条记录的id,然后adoquery的locate定位


Delphi(Pascal) code

var
bookmark:TBookmark;
begin
bookmark :……


同意楼上的观点。dbgrideh本身就有定位的功能,dbgrid的当前记录就是数据集中的当前记录,没有必要重新定位.如果修改的是当前数据集,没有必要刷新。
如果你是另开一个数据集,保存后,就需要requery并重新定位。

jlh:=adoquery1.recno;
adoquery1.requery;
adoquery1.recn:=jlh;

这个方案没有考虑多用户,如果是多用户就要用ID做为定位标志了。

作者: babydog01   发布时间: 2011-09-08

引用 4 楼 babydog01 的回复:
引用 1 楼 bdmh 的回复:
如果是单表,没必要刷新啊,直接数据集组件的EDit...Post就立即显示了
如果是联合表,通过update更新,就要刷新了,定位方法很多,adoquery的bookmark可以,还可记录一下那条记录的id,然后adoquery的locate定位


Delphi(Pascal) code

var
bookmark:TBookmark;
beg……


adoquery1.recno 是什么属性呢?如何声明呢

作者: seleron   发布时间: 2011-09-08

热门下载

更多