没办法,没法过年,只有散分。。。。。

freeparadise 2004-11-11 02:48:31
我有两个表,用一个ADOQuery做联接并显示在DBGRID上,用两个ADOTable编辑这两表,程序开始运行时正常,但对两个表同时新增记录,POST()(UpdateBetch()也用了)后,DBGRID中以前的数据消失了,只显示新增加的那条记录且只有第一个表对应的数据ADOQuery执行EXLSQL()、ReQuery()、ReFresh()、CLOSE()\OPEN()、Active=false\Active=true都没有。重新运行程序就可以了。ADOQuery的SQL是:
SELECT A.GOODS_ID,A.GOODS_NAME,B.UNIT_NAME,B.GOODS_SPEC,A.GOODS_CD,B.GOODS_PRICE,A.GOODS_ZJM,B.BAR_CODE,A.GOODS_JYZT
FROM (dbo.GOODS A LEFT OUTER JOIN (SELECT * FROM dbo.CASING WHERE DEFAULTVALUE=1) B ON A.GOODS_ID=B.GOODS_ID)
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
freeparadise 2004-11-12
  • 打赏
  • 举报
回复
自己解决,还是感谢各位的积极参与。散分。。。
guanshangming 2004-11-11
  • 打赏
  • 举报
回复
ADOQuery查询的结果是保存在内存的,结果并不受真实表更改的影响,只有在Requery,重新打开后再更改数据集的内容。

我自己已做了一个试验,证实了上面的说法,也就是ADOTable无论删除,修改,添加,ADOQuery的内容都不会直接更改,要到Requery或Open才更新。(BC6+Access2000 In windows 2000)

至少你的程序有故障,你要排除其它的因素,如ADOQuery有没有设置过滤等等。
最好你自己先做个试验,新开一程序,再试试。
chpst 2004-11-11
  • 打赏
  • 举报
回复

AdoQuery->Close();
AdoQuery->Open();
ttfwind 2004-11-11
  • 打赏
  • 举报
回复
或者你可以控制在两个记录都插入之后进行 查询 显示
对你得adoquery refresh一下
ttfwind 2004-11-11
  • 打赏
  • 举报
回复
那和两个表增加的记录没什么关系吧?

学习中!

1,178

社区成员

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

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