• 締切済み

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

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

みんなの回答

noname#182251
noname#182251
回答No.2

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

meteo2
質問者

お礼

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

関連するQ&A

  • ACCESS VBAでのフォームのコピー

    ACCESS VBAでのフォームのコピー OS;WinXP,ACCESS2000 以下のデータベースファイル(ファイルAとする)がある。 テーブル:生産量テーブル フォーム:閲覧フォーム、転送フォームA 生産者テーブルは、毎日のデータを蓄えるもので1か月分ある。 閲覧フォームは、生産量テーブルのデータを見やすく整えたフォーム。 生産量テーブルは1カ月分しかないため、次の月になったら生産量テーブルから 所定のレコード(月によって変わる)のみ抜き出した新しいテーブルBを作成する。 そして新たにデータベースファイルBをVBAで作成し、DoCmd.ObjectCopyで、 ファイルAからファイルBにテーブルBと閲覧フォーム、転送フォームAを コピーしようと考えた。 (1):しかし、転送フォームA上でVBAを用いてコピーしようとすると、 転送フォームAのみ、フォームが開いているのでコピーができない旨のエラーが出る。 (2):転送フォームAを転送フォームBと名前を変えてコピーすることはできるが、 ファイルBを開いたときに名前を転送フォームAに自動で戻さなければならない。 (手動で戻すことはできないとお考えください) (3):(2)の変形版で、ダミーテーブルをコピー時に作ってファイルBに送信し、 ファイルBを開いたときにダミーテーブルがあればこれを消して転送フォームBを 転送フォームAに名称変更することも考えたが、ダミーテーブルがあるか否かを 判定する関数(if文とかと同時使用することとなるだろうが…)がわからない。 長文になってしまいましたが、どなたか知恵をお貸しください。

  • ACCESSフォーム上のボタン押下時のエラー

    もう一つのACCESSデータベース(DB)から、別なDBに、フォーム、クエリー、テーブル等をコピーして貼り付けた後、貼り付けた先のフォームのボタンをクリックすると、「ファイルへのアクセスでエラーが発生しました。ネットワークへの接続が切断されている可能性があります。」のメッセージが表示されて、実行できません。解決方法をご存知の方は、アドバイスをお願いいたします。

  • データベースが壊れて使用できません

    ACCESS2000を使用しています。 最近データベースが毎日のように壊れ業務がすすみません。 症状 ・フォームに配置した他のフォームや印刷プレビューを開くボタンをクリックすると突然「直前の操作はキャンセルされました」と表示されます。(たった1分前に普通に動いていたのに!) 一旦データベースを閉じて同じ操作をすると今度は「モジュールがありません」と表示され、 このあとはすべてのボタンが操作不能になります。フォームのボタンからではなく直接「レポート」を開こうとしても同じです。 ・空のデータベースを作り、この中にすべてのオブジェクトをコピーして作り直すと直後は直ったかようになりますが、2、3回目に開いた時、今度は別のボタンが壊れたりしてまた似たような状態になります。 ・「最適化/修復」もかけましたが効果はありません。 使用形態 ・データ件数は1000件弱。 ・テーブルとフォームなどその他のオブジェクトは切り離し、ともにネットワークサーバにおいて使用していますが、これを使っているのは3人だけです。 ・データベースを開くとき特定のフォームを自動表示させています。これにはサブフォームを使い割とたくさんのコントロールを配置しています。 ・2、3年前からこのような形態で使用していますが、壊れることは滅多にありませんでした。 しかし4月くらいから不調になることが多くなり、先週からは「使うたびに壊れる」といった感じでにっちもさっちもいかなくなりました。 ホトホト疲れました。一体何が原因でしょうか? どうぞよろしくお願いします。

  • Accessのフォームについて

    Access2000を使用しています。 2つのテーブルがあるデーターベースで、1つのテーブルを対象に作った フォームをもう一つのテーブルにも適用したいのですが、 フォームをコピーして、参照するテーブルを変更することはできないのでしょうか? 質問の意味がわかりにくいかもしれませんが、よろしくお願いいたします。(_O_)

  • ACCESS97 レポート。フォームが作れません

    ACCESS97で作成されたファイルのレポート。フォームが編集、新規作成ができません。 テーブル、クエリ、マクロはできます。 データベースウィンドゥのフォーム、レポートから 新規作成、編集ボタンが押せない状態になってます。 権限やセキュリティで引っかかっているのかと思って、【ツール】下の機能を見たのですが。 関係なさそうな気がします・・・・。 仕方ないので、必要なテーブルやクエリを別ファイルにインポートして、そちらで レポートを作成しています。 元データのファイルに組み込みたいのですが、やり方を教えてください・・・。

  • access2010 データベースウインドウ

    ACCESS2010で、(ACCESS2003のときの)データベースウインドウを 見ようとすると、ウインドウではなくて画面の左端にテーブルやクエリー などのいずれかが表示された状態になります。 これを、ACCESS2003の時のデータベースウインドウのように、 一つのウインドウとして自由に移動させるにはどうすればいいでしょうか。 大きいフォームの設計がしずらく感じてしまいます。 同じことでプロパティの場合も教えていただけると助かります。

  • フォームのコピー流用使用について

    見よう見まねでACCESSを使ってきました「現在進行形・・・。」。質問の趣旨についてご疑念は覚悟していますが、基本的な知識の欠落感は多少なり感っじていますので、何なりと申していただければと思っています。 「やっていること1」 ACCESSでデータベースを作成するとき、検索結果を表示するフォームなど複数必要なこともあり、完成させたフォームをコピーして使っています。同じフォームを作る手間を省くのが目的になっています。 「やっていること1の補足」 コピーしたフォームの「フォーム名・コンボボックス・コマンドボダン・テキストボックス」の名前を変更し、コピー元のマクロやプロシージャや値集合ソースは残して、コピーフォーム用として新たに作成しています。 「やれたら実行したいと思っていること」 コピーしたフォームの名前だけを変更させて、「コンボボックス・コマンドボダン・テキストボックス」「プロシージャや値集合ソース」をそのまま使えれば使いたいと考えています。 以上ですが、宜しくお願いします。

  • ユーザーフォームをコピーするには?

    エクセルでVBEからユーザーフォームを作りそれをコピーし別のエクセルファイルで使いたいのですがどうすればよいでしょうか?

  • データベースウィンドウを表示しないで、データベースウィンドウを更新する

    http://support.microsoft.com/kb/304256/ja マイクロソフト技術情報で、RefreshDatabaseWindow メソッド は、 Access2000形式で保存されたプロジェクト(ADP)で動作しませんと出ており、データベースオブジェクトの作成、削除、または名前の変更が行われた後で、データベース ウィンドウを更新する処理が、データベースウィンドウを表示している状態でしか更新できません。データベースウィンドウが表示されていない状態で、データ入力フォームが表示されて、何かの処理がされたときにデータベースウィンドウを最新の状態に更新したい場合、何か方法をご存知の方いらっしゃいましたらご指導ください。 テーブル作成をした後、テーブルにアクセスする処理をしようとするとテーブルがないため、エラーになってしまうことがあるのですが、一時的にデータベースウィンドウを表示させてF5を押下して最新にして作成したテーブルが表示されるとエラーは発生しません。

  • Accessで別mdbのテーブルをコピー

    VBで同じような質問をされている方はいたのですが、 ACCESS VBAでの方法がよくわからないので、教えてください。 別フォルダにあるmdbからテーブルをコピーしたいのですが、 どのようにしたらいいのでしょうか。 DoCmd.CopyObjectを使うと、コピー先を指定することはできるようですが、 コピー元を指定してコピーする方法を教えてください。 よろしくお願いします。