2011-12-27 4 views
0

私がしようとしているのは、既存のMS Accessアプリケーションをフロントエンドに分離することですユーザーのマシン上でローカルに実行する)とバックエンド(ネットワーク上のファイルサーバー上でホストされる)を使用し、ユーザーは「読み取り専用」モードと「書き込み」モードのどちらかを選択できます。この考え方は、一度に1人のユーザしか「書き込み」モードを使用できず、複数の顧客に同じ在庫が割り当てられないようにすることです。私の問題は、アプリケーションが現在のところ、.ldbファイルが存在しない場合(現在は読み取り専用モードがない)、アプリケーションを入力できるようにする.batファイルを開くように要求することによってアプリケーションが並行処理を処理するためです。プロダクションデータに「読み取り専用」モードでアクセスするユーザーは、.ldbファイルの作成から他のユーザーへの一貫性のないブロックを行います。MSAccessでVBA(ADODB)を使用して、リモートDB内のロックレコードを使用してリモートDBからローカルテーブルにデータを追加します

これを実装する最大の課題は、ユーザーがローカルにインストールされているMS Access(.mdb)ファイルの一時テーブルへの書き込みアクセス権を持っている必要があることです。私はリンクテーブルを使用してこれを実装しようとしましたが、リンクされたテーブル(.ldbファイルを作成する)を使用してレコードがロックされるタイミングをどう制御できるかわかりません。

答えて

1

共有設定を排他モードに戻すことができます。その後、一度に1人のユーザーしかファイルにアクセスできません。このリンクやその他の共有オプションを確認してください。

http://office.microsoft.com/en-us/access-help/set-options-for-a-shared-access-database-mdb-HP005188297.aspx

サイドノート:む〜。共有ネットワーク環境でのアクセスの使用は楽しいものではありません。このファイルには何も重要でない/時間に敏感である/安全であることを願っています。 .ldbファイルが削除されず、他のユーザーをブロックすることは、私がこの状況で定期的に起こることを見るために使用するものです。私は、Accessファイルをフロントエンドとバックエンドに分割するのが最初のステップだと考えています。次に、SQL Serverデータベースにリンクテーブルを使用することで、これらの問題を解決できます。しかし、もしあなたがこのレベルの努力をしているのであれば、アクセスをダンプし、COTS製品を入手したり、新しいアプリケーションを作成することを検討したいかもしれません。

+0

+1サイドノート。 –

0

使用しているAccessのバージョンによって、UI開発の柔軟性が非常に高くなります。言い換えれば、これは "データベース"問題に類似した "インターフェース"問題のように聞こえる。誰もがテーブルに書き込むことができれば、在庫が在庫に追加されたかどうかに関わらず、ややリアルタイムでチェックすることができます(パフォーマンスはより大きなデータセットで問題になる可能性があります)。

私がこの問題を処理したのは、2つのテーブル、incommingと発信ログがあり、商品の量に関する在庫リストに対して数学を行ったクエリを設定したことです。また、総勘定元帳のように、2年前に起こったことをクエリが考慮しないように、「ログを閉じる」(毎月、四半期ごと)に時間を設定します。

アクセス関連のものについてさらに助けが必要な場合は、Access Monsterはアクセスのみを処理する良いフォーラムサイトです。

0

私の問題は、現在のところ、.ldbファイルが存在しない場合(現在のところ読み取り専用モードがない)、ユーザーにアプリケーションの入力を許可する.batファイルを開くように要求することで、だから私は、ユーザーが "読み取り専用"モードでプロダクションデータにアクセスするのを防ぐために、.ldbファイルを作成して、他のユーザーを不本意にブロックしないようにする必要があります。

- >すべてのユーザーが自分のマシンのフロントエンドの彼自身のコピーを持っている場合、あなたはバックエンドの.ldbファイルをチェックする必要があると思います。あなたが言った

は、私は誰を与えるバックエンドへのアクセスを書いて、バックエンドでの「ユーザXによってロック」フィールドで、プログラムで実際の書き込みを管理するために容易になるだろうと思いますこれは、すべてのユーザーを置くための唯一の理由である場合mutlipleのお客様へ

  1. を割り当てられている在庫の同じ部分を防止することが、 1つは読み取り専用モードで、「ユーザーXによってロックされました」フィールドをインベントリテーブルに置くことができます。誰かが在庫の修正(または開いている)を開始した場合は、そのユーザー名でレコードを更新し、完了したら再度ユーザー名を削除します。
    別のユーザーが同じインベントリを開こうとすると、最初のユーザーの名前は既に「ユーザーXによってロックされています」フィールドに表示され、2番目のユーザーを読み取り専用モードにすることができます。

  2. 在庫片が唯一の問題ではなく、他のすべてのユーザーが実際とすぐに他の誰かがすでに編集している、あなただけの1列と1行で新しいテーブルを作成することができますようを変更することが許可されていない場合これを「ユーザーXによってロックされた」フィールドとして使用します。内部にユーザー名があるとすぐに、他のユーザーを読み取り専用モードにすることができます。編集中に誰かがフロントエンドがクラッシュしますので、もし

どんなにあなたがそれを行う方法、あなたは管理者メニューのいくつかの種類を提供しなければならないだろう、他の誰かがこのユーザーのロックされたデータのロックを解除できるようにする必要があります(=削除します「ユーザXによってロックされた」フィールドからの彼のユーザ名)。

関連する問題