ADOQuery的刷新問題?

jmchen 2005-06-26 10:53:34
使用ADOQuery,其中的SQL語句使用了left outer join on staffer.id=contract.id將員工表中ID與合約表處理此合約的員工iD關聯起來,以便在查詢中獲得員工名字,但是在增加一條合約時,合約表中當然是增加的員工ID,但是此query對應的DBgrid中的員工名字就不能出來,我使用的是requery將名字刷新一遍顯出來,請問有沒有效率高一點的辦法,讓名字顯出來?
...全文
476 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzxyd 2005-09-04
  • 打赏
  • 举报
回复
有两种方法:
一:将员工姓名设为查询字段或计算字段,用ID关连,则在新增后它会自动更新。
二:先save当前bookmark,然后close再open 再gobookmark,以定位到先前位置。注意在close前关闭数据感知组件显示。否则会闪的。
hqhhh 2005-09-03
  • 打赏
  • 举报
回复
楼主的方法应该是最简单的方法了!
只有重新关闭然后再打开才能刷新!
CableFan 2005-09-03
  • 打赏
  • 举报
回复
我遇到了,正在等好答案.
我现在是requery后重新locate.
jmchen 2005-07-01
  • 打赏
  • 举报
回复
沒有人遇到過這樣的問題嗎?
jmchen 2005-06-30
  • 打赏
  • 举报
回复
主要是因為Requery以後,當前記錄就跑到第一條,為了回到剛才修改的記錄,又得重新定位,所以需要一種方法解決這個問題
lu仙深 2005-06-30
  • 打赏
  • 举报
回复
用什么方法直接
调用RvProject1的打印啊
不需要预浏
直接点Button1打印!
jmchen 2005-06-30
  • 打赏
  • 举报
回复
仍然沒有解決
jmchen 2005-06-29
  • 打赏
  • 举报
回复
有沒有人給個答案
paranoia190 2005-06-28
  • 打赏
  • 举报
回复
幫你頂
csdyyr 2005-06-28
  • 打赏
  • 举报
回复
studying...
jian23cn 2005-06-27
  • 打赏
  • 举报
回复
如果有主键的话那用refresh应该可以刷新的~
dance_code 2005-06-27
  • 打赏
  • 举报
回复
如果adoquery控件是作为数据显示控件的数据源,sql语句发生变化以后,最好还是先close然后open,我是这样来处理的。
jmchen 2005-06-27
  • 打赏
  • 举报
回复
自己頂
萧山夜雨 2005-06-27
  • 打赏
  • 举报
回复
refresh对数据的刷新通常都无用,感觉上是与OnPaint()相关的刷新
记录集不多的情况用close open吧。
jmchen 2005-06-27
  • 打赏
  • 举报
回复
代碼太長,不太好貼,我描述一下,如果用主明細的方式,當然不能出現在DBGRid的同一行,我的SQL語句是這樣的,
select * from tblContract as C
left outer join tblClient as L on C.CltID=L.CltID
left outer join tblStaffer as S on C.stfID=S.StfID
left outer join tblContainerType as CT on CT.CTID=C.CTID
left outer join tblMoneyType as MT on MT.MTID=C.MTID
where isEnd=0 and isCancel=0

我在這個查詢中添加一條合約的時候,因為在合約裡加的是ID,因此在DBGrid中,名字那一項就不出來,必須要Requery一下,才能出來,怎麼處理能夠效率高一點,因為我的程序在internet上跑,不想讓數據在網上跑來跑去的
78hgdong 2005-06-27
  • 打赏
  • 举报
回复
给出你的这段代码看看!应当说都可以在同一个DBGrid中显示的.
jmchen 2005-06-27
  • 打赏
  • 举报
回复
proteus(聪聪) 提到的主-明細方式的確是可以,可是它們不能放到一個DBGrid中啊
lovend 2005-06-27
  • 打赏
  • 举报
回复
添加好后重新刷新查询呀。我还不知道有什么好办法, 帮你顶
proteus 2005-06-26
  • 打赏
  • 举报
回复
试一试用Master-detail方式,
定义两个adotable:staffer,contract;和一个datasource:DS_contract,
把ds_contract的dataset关联到contract;
把staffer的mastersource关联到ds_contract;
在staffer的masterfields编辑器中定义staffer.id=contract.id
dbgrid1关联到staffer对应的datasource上,
这样修改contract时,staffer会同时更新

2,507

社区成员

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

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