• 全部
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发
  • 问答

救急救急,数据更新不能及时显示的问题~~~在线等待送分!!!

keikai 2002-05-19 02:36:42
//虽然这个问题是Delphi的,但是,C++Builder也一样,所以,俺也把他贴过来,请各位BCB高手相助。

我有一个应用程序,同时开两个实例,访问数据库,数据的更新不能及时反映:
如下,
//主窗体 TMainForm
//菜单点击事件
procedure TMainForm.mSupplyClick(Sender: TObject);
var FrmSupply:TSupplyForm;
begin
FrmSupply:=TSupplyForm.Create(Self);
FrmSupply.ShowModal;
FrmSupply.Free;
end;

//数据显示、编辑窗体 TSupplyForm
//特别注明:TSupplyForm中有一个IBSupplyQuery,被界面上的
DBGrid使用;还有一个IBUpdateQuery,用来更新数据。
IBSupplyQuery的CacheUpdates被设置为false

//在窗体被创建的时候打开Query,并通过DBGrid显示出来
procedure TSupplyForm.FormShow(Sender: TObject);
begin
// IBSupplyQuery.Active:=True;
IBSupplyQuery.Open;
//IBSupplyQuery.Refresh;
end;
//关闭Query
procedure TSupplyForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IBSupplyQuery.Active:=False;
end
;
procedure TSupplyForm.btnExitClick(Sender: TObject);
begin
Close;
end;

procedure TSupplyForm.btnRefreshClick(Sender: TObject);
begin
// IBSupplyQuery.Transaction.
IBSupplyQuery.Close;
IBSupplyQuery.Open;
end;
procedure TSupplyForm.btnEditClick(Sender: TObject);
begin
if (IBSupplyQuery.RecordCount>0) and (DBGrid1.SelectedRows.Count>0) then

begin
//...根据DBGrid中记录的值,构造IBSupplyUpdate的参数
//IBSupplyUpdate.ParamByName('NAME').AsString := 'abc';
IBSupplyUpdate.ExecSQL;
IBSupplyUpdate.Transaction.Commit;//提交事务,数据库中数据立刻更新
end;
end;

我总结为,这个TIBQuery控件读的数据就是一开始从数据库中读过来,并保存在缓存中的。
--

放几千爆竹,将穷鬼轰开,几年来被这小畜生弄得偶空手一双,
点数炷清香,把财神引进,从此后愿您老人家保佑俺腰缠万贯.
...全文
7 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
keikai 2002-05-19
我就是有一个db链接到数据库,对应也有一个TIBTrasaction啊。
这儿我又发现一个稍微好的方法,就是先把DATABASE.CloseDatasets一下。
不过,程序还是显得很慢~~~
回复
Libran 2002-05-19
按说不该存放在本地,不用重连的啊
你怎么干的?
回复
keikai 2002-05-19
除了将DB重新开启、关闭之外,还有无别的好办法?
IBSupplyQuery.Close;
IBSupplyQuery.Database.Close;
IBSupplyQuery.Database.Open;
IBSupplyQuery.Open;
回复
magicsnake 2002-05-19
需要进行重新查询进行更新
回复
landylau 2002-05-19
IBSupplyQuery.Close;
IBSupplyQuery.Database.Close;
IBSupplyQuery.Database.Open;
IBSupplyQuery.Open;


回复
keikai 2002-05-19
呵呵,老兄啊,我也是这么想的,不过,这样子之后,数据集仍然是老样子,并没有更新,Sigh~
现在的问题是,IBSupplyQuery.Open; 得到的数据集,来自本地,不是从服务器上读过来的啊~~~
回复
landylau 2002-05-19
是说点btnEdit后不能及时反映吗?
在btnEditClick最后再执行一次

IBSupplyQuery.Close;
IBSupplyQuery.Open;
回复
相关推荐
发帖
C++ Builder
创建于2007-08-02

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2002-05-19 02:36
社区公告
暂无公告