关于增加记录的问题!问题还没有解决! (50分)

  • 主题发起人 主题发起人 winsock
  • 开始时间 开始时间
W

winsock

Unregistered / Unconfirmed
GUEST, unregistred user!
各位朋友帮个忙呀!

我用adoquery想数据库中增加一条记录后,成功后。
按道理应该是显示刚才新增加的那条记录在dbgrid的最后面的。
可为什么dbgrid会显示空了呢?连以前的记录也没有显示呀!

会不会和我的最后这句adoquery.exesql有关呢?

如果是,应该该好呢?谢谢了!
 
应该和adoquery.exesql无关,但建议用ADOQuery.Open再ADOQuery.Requery();
不知你是怎样的添加方式,ExeSql和Open都可以实现SQL语句的执行,但前者不返回
SQL语句的结果集。
其它原因:
1、是不是在添加记录的操作中又对ADOquery的SQL查询条件进行了重设,重设的语句可能
条件出错。
2、在操作中将dbgrid的DataSource改变
3、在操作中将DataSource的DataSet改变
4、ADOQuery的Active被设为FALSE
5、ADOquery被关闭了//可能性较大
 
用EXESQL肯定为空啦,因为EXESQL是通过直通SQL模式发送一条SQL语句到数据服务器,
执行数据操作,如果成功返回一个大于0的值,并不返回数据集
建议用另外一个ADOQUERY控件来插入数据,然后从新打开与DBGRID关联的ADOQUERY
也可以用ADOQUERY.APPEND来增加记录,然后对各个字段赋值,再调用POST
 
办法简单dbgrid的指向的adoquery,在运行完添加或删除后,在select一次,搞定.
 
按楼上的开销太大
 
你一定是将ADOQuery的SQL的 Select 语句给改成Insert 语句了,结果当然是这样子!
你用ADOQuery的Insert方法就行了。
 
问题还没有解决呀!这是我的代码!
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(’insert into tbPerson’+’(Psn_code,Psn_name) values (:PSnCode,:psnName)’);
ADOQuery1.Parameters.ParamByName(’Psncode’).Value := Edit1.Text;
ADOQuery1.Parameters.ParamByName(’Psnname’).Value := Edit2.Text;
ADOQuery1.ExecSQL;
 
最后增加一句ADOQuery1.open就OK了
 
已经验证是正确的!给分吧!
 
多人接受答案了。
 
后退
顶部