有一个应用程序在多台计算机上运行(大概在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; Mode=Share Deny None; Extended Properties=""; Locale Identifier=1033; Jet OLEDB:Registry Path=""; Jet OLEDB:Database Password=""; Jet OLEDB:Engine Type=4; Jet OLEDB:Database Locking Mode=0; Jet OLEDB:Global Partial Bulk Ops=2; Jet OLEDB:Global Bulk Transactions=1; Jet OLEDB:New Database Password=""; Jet OLEDB:Create System Database=False; Jet OLEDB:Encrypt Database=False; Jet OLEDB:Don't Copy Locale on Compact=False; Jet OLEDB:Compact Without Replica Repair=False; Jet OLEDB:SFP=False; Data Source=Q:\BEL_01\BEL_GADM\ACCESS\Restrictions.mdb; Jet OLEDB:System database=C:\Program Files\Tele Atlas\Common Files\DPT.MDW; User ID=dbadpt; Password=dbadpt;
当我们点击代码执行后的确定按钮
if dmTimeDomain <> nil then
begin
if (dmTimeDomain.dbTimeDomain.InTransaction) then
dmTimeDomain.dbTimeDomain.CommitTrans;
end;
end;
请建议。
答案 0 :(得分:4)
Access绝对支持多用户环境,但必须正确设置您的权限。所有用户必须能够在数据库所在的目录中创建文件,并且所有用户必须具有修改其他用户在该目录中创建的文件的权限。有很多方法可以搞砸了。这是因为Access使用单独的.ldb文件作为其管理并发多用户访问的机制的一部分。
一个好的测试是让一个用户在共享目录中创建一个文本文件,然后确保其他用户可以打开该文件,然后保存对它的更改。
答案 1 :(得分:1)
两者都应该能够使用该应用程序。如果一个用户正在编辑表单或表,则其他用户将无法编辑这些相同的对象。但是,一旦它处于“生产”状态,这应该与应用程序无关。几年前,我帮助将一个大型应用程序转换为MS SQL Server后端(stil MS Access前端),直到那时,他们已经成功地同时使用了15个用户的应用程序。该应用程序太大了(100个表单,100个表,有些行有一百万行)所以他们因性能原因而移动。否则他们仍然完全在Access上。
答案 2 :(得分:0)
考虑使用Access Project(adp扩展名)而不是普通的访问mdb文件。访问项目与SQL Server桌面引擎一起使用,您可以在Office CD上找到单独的安装文件。这实际上意味着您运行的SQL服务器有一个稍微淡化的版本,此服务器将为您处理所有并发问题。此外,如果您的数据库对于Access项目来说太大,您可以轻松地将数据库移植到完全成熟的SQL Server计算机。您可以在Access Project中执行大部分可以使用SQL Server执行的操作,包括存储过程等,并且设置和连接非常简单。