Microsoft Access 掲示板

フォームをコピーして複製するとクエリが連動してしまうのは?

5 コメント
views
4 フォロー

1年間、12フォーム(1か月1フォーム)の管理システムを作成しています。

最初に1月分のフォームを作り、2月~12月分は、1月のフォームをコピーして複製しました。
複製した各フォーム内で、使用する各クエリは「プロパティシート → レコードソース」で、
各々の月を表示させることができました。

しかし、上記の操作を完了させて、他のフォームを同じように操作すると、
既に操作を完了させたフォームのクエリまで、連動して変更されてしまいます。
(同じテーブルからデータは取得していますが、フォーム同士で連携しているような箇所はありません)

コピーして複製させたことで、何かが連動しているのでしょうか?

access初心者なので、拙い説明で申し訳ありません。
ご存じのことがございましたら、アドバイスお願いいたします。

try&try
作成: 2020/03/24 (火) 14:02:08
通報 ...
1
hiroton 2020/03/24 (火) 14:38:05 124c8@f966d

それぞれのフォームの「レコードソース」にはどのような値を設定していますか?

作成済みのクエリを「レコードソース」として指定した場合は、それは、作成済みのクエリを参照するという形になります。
この場合は、「レコードソース」からクエリを修正すると大本のクエリが変更されますので、このようなフォームをコピーして「レコードソース」からクエリを修正すると同様のフォームすべてに影響がでます。

共通のクエリを基にそのフォームだけのデータを表示したいのであれば各フォームのプロパティで「フィルター」に抽出条件を設定し、「読み込み時にフィルターを適用」をはいにすると良いでしょう。

2

hirotonさんの回答と同じですが、
レコードソースはテーブルを設定するか、クエリなら抽出条件を設定していないクエリを設定します。
そのうえで、フォームの「フィルター」プロパティに抽出条件式を設定するといいでしょう。
抽出条件式が分からない場合は、現状のテーブル名とフィールド名を提示してください。
クエリなら、SQLビューにしてSQL文をコピーして貼り付けてください。

3
try&try 2020/03/25 (水) 15:22:27 7c825@e359a

アドバイスありがとうございます。

「4月管理フォーム」の場合、サブフォームに「Q-4月日報一覧」というクエリを「▽ボタン」から指定しました。
一時的にはこれで、4月分のクエリが正しく表示されますが、他に複製したフォームにも同じクエリが表示されてしまいます。

「Q-4月日報一覧」のクエリは、1か月毎に12個あり、それぞれ「Q-5月日報一覧」、「Q-6月日報一覧」と分けられています。
(↑のクエリは、皆、同じテーブル(T-日報マスタデータ)から1か月毎にデータが抽出されているものです)

フィルターの抽出条件を使ったことがなく、抽出条件式について自分でも調べてみたいと思います。

4
hiroton 2020/03/25 (水) 16:20:04 f9267@f966d

サブフォームを使ったフォームでしたか・・・

サブフォームも外部のフォームを参照するという仕組みなので、コピーしただけのフォームではすべて同じサブフォームを使っていることになります。当然、どこかで修正を入れればそのサブフォームを使っているフォームすべてに影響がでます。

また、フィルターを使ってと回答しましたが、この場合、フィルターもサブフォームそのものに設定することになりますので、すべて共通の設定となってしまいます。

解決策1
サブフォームも各月分用意する
(フォームをコピーした後サブフォームのソースオブジェクトを変更する)

解決策2
VBAを使いフォームを開くたびにサブフォームのフィルターを設定する

5
try&try 2020/03/25 (水) 18:13:38 7c825@e359a

ご丁寧なご回答ありがとうございます。
解決策まで分かりやすくご提示いただき助かります。

エクセルのように、単純にコピー複製とはいかないのですね。
初めてaccessでの作業をしているので特徴を把握できず悩んでおりました。
問題点がはっきり分かって気分が軽くなりました。
ちょっと作業が増えそうですが、解決策1でコツコツ作業したいと思います。

ありがとうございました。