いくつかのマシン上で実行されているアプリケーションがあります(大体2と言います)。このアプリケーションはネットワーク上に置かれた共有mdbを更新します。ユーザーは一度に共有mdbを更新しようとしますが問題は1人のユーザーだけが更新できます他のユーザーはそれを開くことができません。誰もがアクセスがマルチユーザー環境をサポートすることを提案することができますか?
編集:
TFormRoadAttribという1つの形式があります。
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;
下記のコードが実行されます[Ok]ボタンをクリックすると
if dmTimeDomain <> nil then
begin
if (dmTimeDomain.dbTimeDomain.InTransaction) then
dmTimeDomain.dbTimeDomain.CommitTrans;
end;
end;
親切にお勧めします。
アクセスは確かにマルチユーザー環境をサポートしますが、あなたの許可は正しく設定されなければなりません。すべてのユーザーは、データベースが配置されているディレクトリにファイルを作成できる必要があります。また、すべてのユーザーは、そのディレクトリに他のユーザーが作成したファイルを変更する権限を持っている必要があります。それを台無しにする多くの方法があります。これは、Accessが同時マルチユーザーアクセスを管理するためのメカニズムの一部として別の.ldbファイルを使用するためです。
1人のユーザーに共有ディレクトリにテキストファイルを作成させ、もう一方のユーザーがそのファイルを開くことができることを確認してから変更を保存することをお勧めします。
どちらもアプリを使用できるはずです。 1人のユーザーがフォームまたはテーブルを編集している場合、他のユーザーはそれらの同じオブジェクトを編集できなくなります。しかし、それが「プロダクション」状態になると、それはアプリに何の影響も与えないはずです。数年前、私は大きなアプリをMS SQL Serverバックエンド(MS Accessフロントエンド)に変換するのを手伝っていましたが、それまでは15人のユーザーで同時にアプリを使用することに成功していました。アプリが大きくなりすぎた(100フォーム、100テーブル、数百万行あるもの)ので、パフォーマンス上の理由から移動しました。そうでなければ、彼らはまだ完全にAccessにいるでしょう。
通常のアクセスmdbファイルの代わりにAccessプロジェクト(拡張子adp)を使用することを検討してください。アクセスプロジェクトはSQL Serverデスクトップエンジンと連携して動作します。これはOffice CDに個別のインストールファイルとして含まれています。これは本質的にあなたが走っているSQLサーバのわずかに水を入れたバージョンを持っていて、このサーバがあなたのためにすべてのあなたの同時並行性の問題の世話をすることを意味します。また、DBがAccessプロジェクトには大きくなりすぎる場合は、DBを本格的なSQL Serverマシンに簡単に移植できます。ストアドプロシージャなど、SQL ServerでできることのほとんどをAccessプロジェクトで行うことができます。セットアップや接続は非常に簡単です。