Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1260335
  • 博文数量: 788
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 7005
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-19 15:52
文章存档

2017年(81)

2011年(1)

2009年(369)

2008年(337)

分类:

2009-02-19 17:03:24



我是一个新手,有一个问题,就是在一数据库中添加纪录后(ADOQuery),显示在DBGrid中,但是添加显示以后不是追加到最后,而是清空了以前的纪录,并只加一条纪录,不能显示已经添加过的纪录,我用了刷新命令也不行,我看到有人说ADOQuery不支持刷新,还有人说再open/close可是我用了还是不行,是不是我用的不对,能不能给我个简单的解释啊,谢谢了。。。。  
  新手求助。。。

添加操作要用ADOQUERY.EXECSQL.所以你OPEN后并没有刷新.  
   
  建议你用两个ADOQUERY.第一个专门用来插入,另一个专门用来显示DBGRID,DBGRID和第二个ADOQUERY连接.  
  第二个close-OPEN后就可以刷新啦.

欧了。。。。很感谢上面的朋友啊。。。两个就可以,非常的感谢,呵呵,开心。。。。。

一个也可以  
  但是execsql之后还要重新读取数据  
  open  
  select   *   from   表名  
  close  
  才可以的。数据集保存的是刚刚通过SQL语句来获得的数据

给了分才算真感谢.  
  楼上那位说的也对,但是语句写错顺序了  
  close  
  select   *   from   tablename  
  open  
 

ADOQUERY.EXECSQL好象好些

ADOQUERY.EXECSQL   的做法是重新加载数据集,不知道你的添加记录的方式是什么样的,如果是insert   into   table方法   就如你说的情况一样,如果是用ADOQUERY.append   或   ADOQUERY.insert就不会有这个问题,这是在现有的数据集基础上操作的!   注意   要想通过ADOQUERY这样的方式操作写数据库

其实只要添加一条记录用post就可以直接的刷新了

adoquery1.Close;  
      adoquery1.SQL.Clear;  
      adoquery1.SQL.Add(str);  
      adoquery1.ExecSQL;  
   
      adoquery1.Close;  
      adoquery1.SQL.Clear;  
      adoquery1.SQL.Add('select   *   from   toone');  
      adoquery1.open;  
  就可以了  
  adoquery1.open;  
  如用到返回数据集的语法   Select   不包括DELETE、UPDATE、INSERT等语法  
  相当于将Query的Active属性设为True;  
  adoquery1.ExecSQL;  
  对于不返回数据集的语法DELETE、UPDATE、INSERT等语法时使用;

二楼的朋友,我不知道怎么给你分啊?呵呵,我到是真想给你。。。。  
   
  其他的朋友也谢谢了昂。。。。

但是这样的刷新DBGRID就会回到表格第一行了。如何可以让表格定位在原来的位置呢,比如我对一个在第2000行的数据修改了,应该在修改并刷新后再定位在2000行的位置上吧。

adoquery1.open  
  后加一条    
  adoquery1.Last;



--------------------------
新闻:专注、极致、快、口碑 互联网创业的葵花宝典
导航:博客园首页  知识库  新闻  招聘  社区  小组  博问  网摘  找找看
阅读(1215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~