【发布时间】:2011-02-15 09:11:47
【问题描述】:
有一个应用程序在多台机器上运行(大约在 2 台机器上)。此应用程序更新放置在网络上的共享 mdb。两个用户都试图一次更新共享 mdb,但问题是只有一个用户是能够一次更新mdb。另一个用户无法打开它。谁能建议访问支持多用户环境?
编辑:
有一种形式的 TFormRoadAttrib。当它激活时调用以下函数
procedure TFrmRoadAttrib.FormActivate(Sender: TObject);
if dmTimeDomain <> nil then
begin
if not (dmTimeDomain.dbTimeDomain.InTransaction) then
begin
dmTimeDomain.dbTimeDomain.BeginTrans;
end;
end;
其中dbTimeDomain=TADOConnection,其值为
'Provider=Microsoft.ACE.OLEDB.12.0; 模式=共享拒绝无; 扩展属性=""; 区域标识符=1033; Jet OLEDB:注册表路径=""; Jet OLEDB:数据库密码=""; Jet OLEDB:引擎类型=4; Jet OLEDB:数据库锁定模式=0; Jet OLEDB:Global Partial Bulk Ops=2; Jet OLEDB:Global Bulk Transactions=1; Jet OLEDB:新数据库密码=""; Jet OLEDB:创建系统数据库=False; Jet OLEDB:加密数据库=假; Jet OLEDB:不要在 Compact=False 上复制区域设置; Jet OLEDB:Compact without Replica Repair=False; Jet OLEDB:SFP=假; 数据源=Q:\BEL_01\BEL_GADM\ACCESS\Restrictions.mdb; Jet OLEDB:系统数据库=C:\Program Files\Tele Atlas\Common Files\DPT.MDW; 用户 ID=dbadpt; 密码=dbadpt;
当我们点击 Ok 按钮时,下面的代码就会执行
if dmTimeDomain <> nil then
begin
if (dmTimeDomain.dbTimeDomain.InTransaction) then
dmTimeDomain.dbTimeDomain.CommitTrans;
end;
end;
请推荐。
【问题讨论】:
-
去掉delphi标签。它不适用于您的问题或对您的问题没有帮助。
-
如果其中一位用户正在使用 Delphi 应用程序怎么办?没有提供足够的信息来了解,但 Delphi 数据访问层中的某些东西可能会导致问题。实际上,现在我已经阅读了下面的 cmets,正是这种情况。 Delphi 标记绝对属于,但我们还需要 Delphi 代码,以便 Delphi 人员可以弄清楚选项是什么。
-
请贴出控制交易的Delphi代码。这可能是问题的根源。
-
我已经更新了我的问题的描述字段请查看它以获取更多信息。
-
连接字符串中定义的连接模式是“Share Deny None”,而在共享 mdb 中它设置为“share”。如果我将连接字符串中的模式更改为“ReadWrite”,则错误即将到来.