ADOQuery数据怎么不能自动更新.......顺便放分!

abcdefgdeng 2005-06-29 08:50:04
我用的是数据集组件是:ADOQuery;为了运行其间查找基本资料速度提高,我的ADOQuery在登陆时就打开了,当我的基本资料数据更新时,ADOQuery里没有更新(比如ADOQuery连的是客户资料表,当我增加一个客户时,ADOQuery里的数据不会自动更新),不知ADOQuery怎么才能自动更新?
希望各位GGJJ给个答案!
...全文
372 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
flexitime 2005-07-24
  • 打赏
  • 举报
回复
其实,我觉得你应该把你的观念改一下,为什么要这样做呢?
按你的需求,你可以调整一下数据表的结构,使得你可以读取近期的1000或1000条记录就行了,你把所有记录都调进来,你认为客户都用得着吗?当然要留调全部记录的功能。
lorvery 2005-07-24
  • 打赏
  • 举报
回复
ADOQuery.Active := False;
ADOQuery.Active := True;
最简单
bluejing0 2005-07-24
  • 打赏
  • 举报
回复
flexitime(我喜欢写程序) (
我觉得你说的很有道理
为什么一次要查询几百万条记录呢?
如果更新的话,只要更新你修改的那条记录不就行了?

建议使用bde,我感觉bde比ado快很多,特别是处理非常多的纪录的时候
addua 2005-07-23
  • 打赏
  • 举报
回复
ADOQuery1.Refresh;
abcdefgdeng 2005-07-23
  • 打赏
  • 举报
回复
我最后是在关闭数据字典窗口时,发送消息到数据模块进行刷新的,这种方法不是很好!也还会有一点廷迟!不得已而求其次了.
Tomato77 2005-07-19
  • 打赏
  • 举报
回复
增加记录 AdoQuery.Append;
steelxu5 2005-07-19
  • 打赏
  • 举报
回复
没有定时刷新功能,
gobiz 2005-07-19
  • 打赏
  • 举报
回复
回复人: abcdefgdeng(dqx) ( ) 信誉:100 2005-06-30 12:31:00 得分: 0


楼在大哥,我用的是SQLServer;里面很像没有分页功能的哦,那是ORACLE的!

我设了一下ADOQuery1的LockType和CursonLocation两个属性;也不行;
很像设CursonLocation为ctKeyset应该会自动刷新数据的.但不知道怎么不行......


=========================================================================
无语……

难道你不知道ADO本身就集成了分页功能吗?管你什么数据库呢?甚至连Access都可以实现分页,否则ASP就没有生存余地啦!

PageSize,PageCount……本来就是ADO的一个特性,不过DELPHI并没有把它封装起来而已,但是我们可以利用ADOQuery.RecordSet.PageSize、ADOQuery.RecordSet.PageCount……等来间接实现,不过这样的用法,针对你的DBGrid是没有用的,你可以使用ListView等来手工写代码显示数据……,这样容易控制,反正我已经好久不用DBGrid啦,局限性太强,而且不容易控制,随时都可能出现错误提示!
pengwenshen 2005-07-19
  • 打赏
  • 举报
回复
觉得用ADOQUERY。CLOSE
ADOQUERY。OPEN执行后 会降低速度
我以前也用 重新写入SQL(select * from talbe_name where )然后执行

现在觉得ADOQuery.Post;
ADOQuery.Refresh;
DBGrid.Refresh;
weiqigao 2005-07-19
  • 打赏
  • 举报
回复
你增加数据肯定要用另外一个adoquery,增加完毕后,在执行一次你的adoquery的sql语句,另外你所有的adoquery要用同一个connection
weiqigao 2005-07-19
  • 打赏
  • 举报
回复
单独再设一个按钮,通过点击按钮来刷新,点击按钮执行一下语句:adoquery.refresh;
chenbin165 2005-07-19
  • 打赏
  • 举报
回复
ADOQuery.Active := False;
ADOQuery.Active := True;
最简单,而且占内存又少。
abcdefgdeng 2005-07-19
  • 打赏
  • 举报
回复
晕,还是要手工来刷新!
ztenv 2005-07-18
  • 打赏
  • 举报
回复
重新写入SQL(select * from talbe_name where )然后执行,就可以了
abcdefgdeng 2005-07-18
  • 打赏
  • 举报
回复
我的Item资料是由一个用户端录入的(假如是由一个文员录入),而当我要开采购订单时,我就要选刚录入的Item资料,因此我用一个下拉框组件,并连接到一个数据集:比如adoquery;因为我的adoquery是我刚登陆系统时打开的,而我要的Item资料在我打开系统之后,由另一个用户录入.因此我的下拉框中找不到对应的Item.因为Item表有太多记录,我不想close再open;这样很慢,你叫我怎么办?
abcdefgdeng 2005-06-30
  • 打赏
  • 举报
回复
楼在大哥,我用的是SQLServer;里面很像没有分页功能的哦,那是ORACLE的!

我设了一下ADOQuery1的LockType和CursonLocation两个属性;也不行;
很像设CursonLocation为ctKeyset应该会自动刷新数据的.但不知道怎么不行......
cnmaxu 2005-06-30
  • 打赏
  • 举报
回复
ADOQuery1.Refresh;
gobiz 2005-06-30
  • 打赏
  • 举报
回复
------------------------------------------------------------------
gobiz(拔剑容易收剑难):
应该在Post后调用ADOQuery1.Requery方法来重新读取数据集的!
------------------------------------------------------------------
me:老兄,每Post后就Requery,这种做法很像也不是很合理啊.

=================================
有什么不合理的呢?因为不仅仅是一个客户端连接到了数据库,如果别人修改了数据,你如何得到呢?岂不是还要Requery呢?为了保证经常得到最新的记录集,就是要这样的呀!如果你嫌速度慢,其实完全可以采用原生ADO实现,而且加上分页功能,客户端基本感觉不到查询的速度慢的!
abcdefgdeng 2005-06-30
  • 打赏
  • 举报
回复
各位,在这个贴下面我还多开了个贴,那个贴还没人回答呢,这个贴分数不够的话,到那个贴去回答也可以啊 !
abcdefgdeng 2005-06-30
  • 打赏
  • 举报
回复
hugoon(hugoon):
我也遇到过老兄一样的问题,不过后来解决了,我的解决方法是:
在窗口的OnShow事件里加入:
ADOQuery1.Close;
ADOQuery1.Open;
就会在窗口打开时自动刷新了!
---------------------------------------------------------
me:老兄,如果的我ADOQuery1连接的表有十多万条记录,就算建了索引,查询出来也有一段时间啊,用户不可能每次打开窗体时都等啊,就是因为这样我才把它放在数据模块里,在程序刚运行时执行!

------------------------------------------------------------------
gobiz(拔剑容易收剑难):
应该在Post后调用ADOQuery1.Requery方法来重新读取数据集的!
------------------------------------------------------------------
me:老兄,每Post后就Requery,这种做法很像也不是很合理啊.

加载更多回复(10)

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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