2011-02-15 30 views
2

有一個應用程序正在多臺機器上運行(大致在2臺)。該應用程序更新了一個共享的mdb放置在網絡上。兩個用戶都試圖一次更新共享的mdb,但問題只有一個用戶能夠一次更新mdb。另一個用戶無法打開它。任何人都可以建議訪問支持多用戶環境?MS Access 2007可以支持多用戶環境嗎?

編輯:
有一種形式TFormRoadAttrib.When它激活以下函數被調用

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

刪除delphi標籤。這對您的問題不適用或有幫助。 – 2011-02-15 16:01:22

+0

如果其中一個用戶正在使用Delphi應用程序,該怎麼辦?沒有足夠的信息提供知道,但在Delphi數據訪問層中可能會導致問題。其實,現在我已經閱讀了下面的評論,情況恰恰如此。 Delphi標籤絕對屬於我們,但我們也需要Delphi代碼,因此Delphi人員可以找出選項。 – 2011-02-16 02:42:59

+0

請發佈控制事務的Delphi代碼。這可能是問題的根源。 – 2011-02-16 02:46:29

回答

4

Access絕對支持多用戶環境,但您的權限必須正確設置。所有用戶必須能夠在數據庫所在的目錄中創建文件,並且所有用戶都必須有權修改其他用戶在該目錄中創建的文件。有很多方法搞砸了。這是因爲Access使用單獨的.ldb文件作爲其管理併發多用戶訪問的機制的一部分。

一個好的測試是讓一個用戶在共享目錄中創建一個文本文件,然後確保其他用戶可以打開該文件,然後保存更改。

1

兩者都應該能夠使用該應用程序。如果一個用戶正在編輯一個表格或表格,其他用戶就不能編輯這些相同的對象。但是一旦它處於「生產」狀態,這應該對應用程序沒有任何影響。幾年前,我幫助將一個大型應用程序轉換爲MS SQL Server後端(stil MS Access前端),直到那時,他們已經成功地與15個用戶一起使用該應用程序。該應用程序太大了(100個表格,100個表格,其中有一百萬行),因此出於性能考慮而移動。否則,他們仍然完全使用Access。

0

考慮使用Access項目(adp擴展名)而不是正常的訪問mdb文件。訪問項目適用於SQL Server桌面引擎,您可以在Office CD上找到它作爲單獨的安裝文件。這基本上意味着你有一個稍微減弱的SQL服務器版本運行,這個服務器將爲你處理所有的併發問題。另外,如果您的數據庫對於Access項目變得太大,您可以輕鬆將您的數據庫移植到一臺完全成熟的SQL Server計算機上。您可以在Access Project中執行大部分可用SQL Server執行的操作(包括存儲過程等),並且安裝和連接起來非常簡單。