delphi 中Adoquery ,在打开时能否让记录指针不移动?

microd 2012-03-29 01:48:11
delphi 中Adoquery ,在打开时能否让记录指针不移动?
由于数据集Adoquery 时,它的针指称动会废时,能否在打开完成之前不让记录指针不移动。打开完毕之后再回复移动?
...全文
227 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
山东蓝鸟贵薪 2012-03-30
  • 打赏
  • 举报
回复
不好意思我记错了,谢谢赐教
wrost 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
不过打开数据库后默认是最后一条记录吧
[/Quote]

打开数据库,默认都是第一条啊!
babydog01 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
大师,DisableControls 只能在刷新记录的时候切断数据组件,但不能使用ADOQUERY 不移动
[/Quote]
假设表名是adoquery1,
DisableControls是切断数据表adoquery1与感知组件如:dbgrid,dbedit等的联系。
如果你在代码中有移动和编辑、添加、删除记录的情况下,adoquery1的记录指针也会动的。
如果你关闭后又重新打开adoquery1,需要重新定位指针。
adoquery1.requery;// 可用楼上的方法。
如果是close后再open的情况下,bookmark也会失效的。重新定位,用locate,seek也可实现。
山东蓝鸟贵薪 2012-03-29
  • 打赏
  • 举报
回复
不过打开数据库后默认是最后一条记录吧
wrost 2012-03-29
  • 打赏
  • 举报
回复


procedure refreshDataSet(daSet: TadoQuery);
var
tempBookmark: TBookmark;
begin
IF DaSet.RecordCount<=1 Then
Exit;
daSet.DisableControls;
tempBookmark := daSet.GetBookmark; //保存书签

daSet.Requery([]); //刷新数据,
try
daSet.GotoBookmark(tempBookmark); //重新获取书签
except
daSet.Last;
end;
daSet.EnableControls;
end;


上边是一种方法。

wrost 2012-03-29
  • 打赏
  • 举报
回复


procedure refreshDataSet(daSet: TadoQuery);
var
tempBookmark: TBookmark;
begin
IF DaSet.RecordCount<=1 Then
Exit;
daSet.DisableControls;
tempBookmark := daSet.GetBookmark; //保存书签

daSet.Requery([]); //刷新数据,
try
daSet.GotoBookmark(tempBookmark); //重新获取书签
except
daSet.Last;
end;
daSet.EnableControls;
end;


上边是一种方法。

wrost 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
delphi 中Adoquery ,在打开时能否让记录指针不移动?
由于数据集Adoquery 时,它的针指称动会废时,能否在打开完成之前不让记录指针不移动。打开完毕之后再回复移动?
[/Quote]

不可能不动,不过有几种方法可以恢复到原位
microd 2012-03-29
  • 打赏
  • 举报
回复
大师,DisableControls 只能在刷新记录的时候切断数据组件,但不能使用ADOQUERY 不移动
babydog01 2012-03-29
  • 打赏
  • 举报
回复
这样用:
self.ADOQuery1.DisableControls;
.........
self.ADOQuery1.EnableControls;

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧