BCB6 + Interbase 6 高分问题

googoler 2002-11-02 02:44:17
编程环境: BCB6,Interbase 6 ,使用IBX构件 二层C/S结构

问题:

A,B用户在不同的机器上运行同一程序同时操作同一表C(增,删,改)

A用户更改了表C,通过CommitRetaining()提交之后,B用户Close,Open,Refresh

不能取得A用户更改信息!通过Commit()提交就可以,但通过Commit()提交会关闭

整个IBDatabase连结!

怎么搞定?第一次提问,别忘了教我怎样给分!

Up者也有分!






...全文
54 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
googoler 2002-11-06
  • 打赏
  • 举报
回复
谢谢以上各位

lifuming 70分
TR@SOE 25分
Friecin 5分

wildhorse01,我给分了你才回复,不好意思!

googoler 2002-11-03
  • 打赏
  • 举报
回复
感谢 lifuming

本来我想了其它的方法搞定的,没想到你的方法这么简单!

高手果然不同!
wildhorse01 2002-11-03
  • 打赏
  • 举报
回复
www.3asoft.com
googoler 2002-11-02
  • 打赏
  • 举报
回复
谢谢 TR@SOE()

是我错了,Commit会置IBTransaction->Active为False,导致相关联的所有DataSet关闭。

推荐的做法是B要重新开始一个事务,怎么做?
A发消息告诉B重新开始一个事务吗?还是使用TIBEvents?

TIBEvents的联机Help太简单,Interbase的Devguide.pdf也说的太简单
可否指点一二!

高分相赠!

lifuming 2002-11-02
  • 打赏
  • 举报
回复
直接发“commit work”命令到后到试试:
IBQuery->Close();
IBQuery->SQL->Add("commit work");
IBQuery->ExecSQL();
TR@SOE 2002-11-02
  • 打赏
  • 举报
回复
第一,我个人认为Commit是不可能关闭数据库连接的。这里可能有了什么问题。

第二,在A提交后,推荐的做法是B要重新开始一个事务,然后就可以获得A更新的内容了。IB使用的是最高级别的Serializable事务隔离,并采用版本机制,所以,除非开始新的事务,否则B不能获得A更新的内容。
googoler 2002-11-02
  • 打赏
  • 举报
回复
C/S结构, .gdb 在服务器端,A,B客户通过TCP/IP访问!
Friecin 2002-11-02
  • 打赏
  • 举报
回复
先搞清楚,你的C表在服务器还是客户端?

2,209

社区成员

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

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