CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

DBGrid自动更新数据问题。

楼主qianying(千影)2002-05-16 13:39:51 在 Delphi / VCL组件开发及应用 提问

我使用TAdoQuery查询数据库中一张表的所有记录,  
  再用DBGrid通过TDataSoure与该AdoQuery对象连接进行记录显示。  
   
  现在我希望在数据库中这张表发生变动时,DBGrid能自动进行更新内容。  
  我试过一些改属性的办法,但没有成功。  
   
  请教。 问题点数:20、回复次数:13Top

1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2002-05-16 13:42:17 得分 0

那你可以用TADOTable,那样就行了Top

2 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2002-05-16 13:49:01 得分 5

如果你用TADOQuery的Refresh的话,可以更新一部分,为什么说是一部分呢,它只更新已有的记录,如修改、删除之类,好象不能更新刚输入的记录。  
  如果有什么办法的话,不防告诉一声,在此谢了!Top

3 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2002-05-16 13:53:09 得分 5

虽然用ADOQuery.Refresh可以更新一部分数据,但并不能更新刚输入的数据,只能是Delete掉的或被Update掉的。Top

4 楼Black(小熊)回复于 2002-05-16 13:54:49 得分 0

如果一定要使用AdoQuery  
  可以在form的Onactivate事件中加入  
  AdoQuery1.active:=false;  
  AdoQuery1.open;或AdoQuery1.execsql;  
  这样每当form重新显示,DBGrid能自动进行更新内容,因为执行了AdoQuery  
  DBGrid的datasource发生了变化Top

5 楼luoshumeng(乡村意外)回复于 2002-05-16 13:56:14 得分 0

写一个过程  
  queryado.close;  
  qeuryado.sql.clear;  
  queryado.sql.add('select   .....')//显示在DBGRID里面的东西  
  queryado.sql.open;  
  修改后或增加后就执行这一个就得了,可能有点笨但先解决这个问题再说吧!Top

6 楼qianying(千影)回复于 2002-05-16 13:56:21 得分 0

刚试过TAdoDataSet,也不行。  
   
  使用TAdoTable需要做什么额外设置吗?Top

7 楼qianying(千影)回复于 2002-05-16 14:14:56 得分 0

其实我就是想做一个监控程序,监视数据库的变化,  
  程序本身并不修改数据库的内容。  
  而我的FORM在第一次打开后就不动了,其上的DBGRID映射数据库中的变化。  
   
  拜托了,谢谢。Top

8 楼luoshumeng(乡村意外)回复于 2002-05-16 14:18:12 得分 0

DBGrid的DataSet可以是ADOQUERY呀,你在临控时只要控我说的那样是可以做到更新的,我们原先也是这样做的呀!!!Top

9 楼chinaway(溪之)回复于 2002-05-16 14:21:05 得分 0

表中的数据变动后,需要对表格重新进行一次刷新,即close   后open.Top

10 楼hydonlee(青山情)回复于 2002-05-16 14:27:00 得分 10

dbgrid可没有那么聪明,   当然你可以自己来定时刷新,   比如   :   5分钟一次.  
  ================================================================  
   
  土人,   我的女友这样叫我  
  大强,   我的同事这样叫我  
  人渣,   我的同学这样叫我  
   
  ...  
  Delphi,   我的最爱......Top

11 楼Black(小熊)回复于 2002-05-16 14:29:18 得分 0

我的意思是当你的数据发生变化,可以调用self.OnActivate(self);  
  这样form不用关闭,就可以实现你的要求。  
  当然,这只是一种方法Top

12 楼qianying(千影)回复于 2002-05-16 15:27:04 得分 0

to   luoshumeng(乡村意外):  
   
  你所说的写一个过程:  
  queryado.close;  
  qeuryado.sql.clear;  
  queryado.sql.add('select   .....')//显示在DBGRID里面的东西  
  queryado.sql.open;  
  修改后或增加后就执行这一个就得了,但是我怎么获取数据库被改动的消息啊?毕竟我的程序并不对数据库进行更新。数据库的更新是由别第三方的程序施行的。  
  Top

13 楼keyhappy(绝对在乎你)回复于 2002-05-17 13:03:52 得分 0

我认为luoshumeng(乡村意外)的意思是  
  queryado.close;  
  qeuryado.sql.clear;  
  queryado.sql.add('select   .....')//显示在DBGRID里面的东西  
  queryado.sql.open;  
  用在要更新查询的结果时用,而不是去更新数据库本身  
  Top

相关问题

  • 怎么样才能实现DBGrid和DBEdit数据自动更新
  • 能否自动更新数据?
  • 如何通过dbgrid更新数据库
  • DBGrid数据更新问题!急
  • 如何在dbgrid或dbedit等感知控件自动更新数据前提示用户保存还是不保存?
  • 自动更新
  • 自动更新
  • 关于JTable自动更新数据的问题
  • 用程序监视数据库,自动发出更新指令
  • 用TDBEdit编辑数据记录是自动更新的吗?

关键词

  • 数据库
  • 数据
  • 修改
  • 执行
  • 内容
  • sql
  • queryado
  • 更新
  • dbgrid
  • adoquery

得分解答快速导航

  • 帖主:qianying
  • unsigned
  • unsigned
  • hydonlee

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo