• 締切済み

他人がデーターベースを開いている時のフォームコピー

Microsoft Access2003について。 データーベースは複数人で開いて、同時に編集が可能となっています。 サーバーに置いてあるAccessファイルをあるPCで開いている時に、別のPCから同じファイルを開いて、フォームをコピーすることはできないのでしょうか。 コピーしたいフォームそのものは、自分も含めてどのPCからも表示させていません。単にmdbファイルを開いてデーターベースウィンドウが表示されている状態です。 その状態で、コピーしたいフォームをクリックして、コピー、貼り付けを行うと、「排他モードで開いていないので、デザインの変更はできません」とエラーになります。同じ状態でもクエリーや、テーブルだとコピーできます。 何をしたいのかと言うと集計を行った結果を、個人別に表示させたいと思っています。 集計結果を自分専用テーブルを作成して格納する所までは難無く完成したのですが、かっこよく見せるためにフォームの原形を用意して、個人別に表示する時にそれをCopyObjectでコピーして、RecordSourceプロパティにて参照テーブルを変更、表示させようとした所でつまずいています。 当然、自分しかそのファイルを開いていない時は、フォームのコピーもできるし集計結果を表示する事ができますので、プログラム自体は間違っていないと思います。 今の所、頻繁に集計する事はなく他人と競合する確率は少ないので、困り度は再低レベルにしますが、何か方法があれば、今後ヘビーユースが予想されるデーターベースへも応用したいと考えています。

みんなの回答

noname#182251
noname#182251
回答No.2

設計(発想)がDB的ではないような気がします。 「集計を行った結果を、個人別に表示」が目的ならば、適当なテーブルとクエリで一つのフォームを使用して表示できます。 また「自分専用テーブルを作成して格納」はどちらかと云えばやらない方がよいような。 では具体的にどうするか? 例えば(仮称) indexテーブルを作成 フィールド dataid:当該レコードとリレーションを取るため userid:ユーザーとリレーションを取るため このテーブルに対象データを積み上げてゆけば、後は適当なクエリを作成して、フォームでユーザーごとのデータを表示できます。 この方法ならば、(今回は必要ないかもしれませんが)同じフォームで、全ユーザーとか、ユーザーAとユーザーBのデータを表示みたいなことも出来ます。

meteo2
質問者

お礼

ご意見ありがとうございます。 つまり、それぞれが集計した結果を一つのテーブルに積み上げて残しておき、必要に応じて条件で絞り込んで表示したらと言うことですね。 そうする事で、レコードソースを変更する必要はなくなり、フィルターをかける事で実現できそうですね。 集計した結果を残しておく方法は、途中の過程で考えたこともあったのですが、集計そのものにはあまり時間がかからないので、毎回実行してもストレスにならないことと、結果を残す分データーベースの容量増加が加速するので、そのとき限りの個人用集計結果テーブルを作成する方法を考えてしまいました。 そのとき限りなので、作成者がデーターベースを閉じると、その結果テーブルも自動的に削除するようにしました。 とは言え、うまく実現する方法が無ければ、紹介いただいた方法を採用していたと思います。参考になりました。

関連するQ&A