在从窗口中给表T添加了新的记录,但是在主窗口的DBGrid中不能显示出更新来。只有关闭程序再打开后才能看到新的记录。(50分)

  • 主题发起人 主题发起人 abv
  • 开始时间 开始时间
A

abv

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么解决阿?
Access库,用的ADOCommand,ADOQuery
 
你用SQL命令更新到数据库则你必须刷新或者从新载入才行
 
请问具体怎么做?
我close,open,FormCreate()都试过了。没用
ADOQuery.refresh用了报错。
求救阿~~
 
运行程序后,第一个添加的记录不能实时的显示出来。但是添加第二个后就会把2条新的记录一起显示出来。再添加就都正常了。这是什么原因呢?
 
ADO连接的话 close,open最快
 
我用的就是close,open。运行程序后,第一个添加的记录不能实时的显示出来。但是添加第二个后就会把2条新的记录一起显示出来。再添加就都正常了。
 
这问题以前也碰到过,好像是数据库的BUG,搞了好久也没法。换成其他数据库了。
 
应该是更新数据库的延时造成的,有好的解决方法么?
 
用同一个adoquery更新应该不存在此问题
 
在不同的窗口,用的也不是同一个adoquery
 
更新数据库的延时造成的,我设置延时二秒再close,open有时候还是不行。有好的解决方法么?
 
重新执行adoquery close/add/open操作
 
如果立刻执行adoquery close/open则没用
等上2,3秒才能刷新,但是也不能保证,也许要更长的等待时间,怎么解决呢?
 
保存没有啊?adoquery.post;
 
用的ADOCommand,也能post么?
 
不能同步更新~~以前碰到过~~
唯一的办法是当从窗体(frm1)更新数据库时通知主窗体(frmMain)~
if frm1.AddRecord then {从窗体向表添加了一条记录}
frmMain.UpdateSelf;

/////////////////////
procedure frmMain.UpdateSelf;
begin
DataControl.DisableControl;
ADODataSet.close;{刷新}
ADODataSet.open;
DataControl.enableControl;

end;
 
只有重新取数据才行。
解决办法:刷新、关闭重新打开数据集。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部