Microsoft Access 掲示板

作業者ごとに作業用のデータをプールしたい

4 コメント
views
4 フォロー

お世話になっております。
コンボボックスで製品名を複数選択して、その製品群について処理をする方法についてです。

現在は、用意してある空のテーブルを利用して、

Private Sub cmb登録製品_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("T_製品仮登録", dbOpenDynaset)
With rs
    .AddNew
    .Fields("製品コード") = Me.cmb登録製品.Column(0)
    .Update
End With
(以下略)

のようなことをして、複数の製品コードをいったんプール(保存)しています。
そのあとT_製品仮登録に記録されたデータを使って処理をしています。

今までは、個人データベースだったので、このようなレベルのものでも事足りていたのですが、
複数人が同時にシステムを使うようになったら、
当然このT_製品仮登録内のデータが複数の作業者によって書き換えられてしまうことになります。

作業者ごとに、作業対象の複数の製品コードデータをプールする方法はどうすればよいのですか?

nokonoko
作成: 2024/07/09 (火) 09:33:36
通報 ...
1

複数人が同時にシステムを使うようになったら、
当然このT_製品仮登録内のデータが複数の作業者によって書き換えられてしまうことになります。

複数ユーザーがデータベースファイルを共有する場合は、「データベースの分割」をして運用することが推奨されています。

Access データベースを分割する - Microsoft サポート

ACCESS データベースを分割して複数人で共有する方法 - たすけてACCESS

サーバーにテーブルのみのデータベースファイルを置きます(バックエンドデータベース)
各クライアントにリンクテーブルとその他のオブジェクトをもつデータベースファイルを置きます(フロントエンドデータペース)

作業用のテーブルはフロントエンドデータベースに置けば、懸念する問題は発生しません。

2
nokonoko 2024/07/09 (火) 12:11:04 c9d3f@54883

回答ありがとうございます。
すでに分割はしていましたが、作業用テーブルをフロントに置く考えがありませんでした。(全部まとめて分割していた)
これで解決できると思います。ありがとうございました。

3

注意点として、フロントエンドに作業用テーブルをおくと、データの追加削除が発生しますので、ゴミがたまりファイルサイズが肥大化するので、定期的にフロントエンドの最適化を実行する必要があります。
あるいは、オプションで閉じるときに最適化してもいいでしょう。

ACCESS 最適化でデータベースの容量を圧縮する方法 - たすけてACCESS

4
nokonoko 2024/07/09 (火) 13:45:11 c9d3f@54883

情報ありがとうございました。
「閉じるときに最適化する」は未チェックでしたので、適用します。