次の方法で共有

Access2016 で 一つのクエリを複数のフォーム内のTEXT BOXを条件に共有する方法

Anonymous
2019-09-25T02:44:23+00:00

いつも拝見し勉強させて頂いております。

特殊な利用方法とは思うのですが、独学のため思い至らずこちらの方々にご助力頂ければと思い書き込みさせて頂きます。

構成要素(名称は例です)

FM_新規作成!txt_ID :フォーム

FM_検索修正!txt_ID :フォーム

Q_結果 :クエリ

FM_検索修正!btm_実行:ボタン

FM_新規作成!btm_実行:ボタン

R_検索結果:レポート

FM_新規作成とFM‗検索修正の二つのフォームにはそれぞれ、txt_IDという同じ名称のテキストボックスがあります。

このtxt_IDに各フォームでそれぞれ入力された数字を利用し、Q_結果クエリの抽出条件として指定したデータを抽出しようとしています。

各フォームのbtm_実行を押した際にQ_結果を元にしたR_検索結果が実行されるようにしてあります。

Q_結果の抽出条件に直接 Form!FM_新規作成!txt_ID とすれば当然予想通りの結果が返ってきます。

ただしそれを指定した際は当然、FM_検索修正のほうでのボタンにはパラメータ画面が表示されてしまい二度手間です。

可能であればこのQ_結果の抽出条件を「現在開いているフォーラムの同名テキストボックス」に動的に変更できるような方法があればご教授頂ければと思います。

よろしくお願いいたします。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2019-09-25T08:50:09+00:00

> Q_結果の抽出条件を「現在開いているフォームの同名テキストボックス」に

> 動的に変更できるような方法

まずこの質問に関しては、以下のようなクエリパラメータの値を

任意のフィールドの値と比較するようになされば一応は可能でしょう。


[Screen].[ActiveForm]![txt_ID]


> FM_検索修正画面は、FM_新規作成で作られたレコードを

> いくつか別テーブルに格納&計算等させて

> 「FM_検索修正画面にのみ」表示させるデータを有しています。

> レコードソース及びQ_検索結果に表示させるデータは同一ですが、

> それぞれ用途が別なため、利用者側(私ではありません)の要望に

> 即した作りにしています。

ただ、フォーム同士で「用途もデザインも取り扱うデータも完全に同じではない

のであれば、使用するオブジェクトや処理をこのような形で共通化させても、

かえってメリットよりデメリットの方が大きくなる恐れがあります。

Access における QBF 技法は確かに便利ではあるのですが、その反面

個々のフォーム(またはレポート)とクエリとの結合度を強め過ぎる

という側面があります。

今回のケースで言えば、(どのフォームがアクティブであるにせよ)

「[Q_結果]は『[txt_ID]という名前のコントロールを含むフォーム』が

開かれている状態でなければ機能しないクエリである」

という本質に変わりはありませんし、そういう意味において

「クエリ単体での取り回しがしづらい」とも言えます。

(例えば、「[Q_結果]の全てのレコードを[R_検索結果]に出力したい」

といった要望が生じた場合を想定してみて下さい)

今回のケースに限って言えば、QBF 技法とは別の手法や仕組みを

用いた方がよいのではないか、というのが私個人の印象です。

この回答は役に立ちましたか?

3 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

4 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2019-10-07T06:35:52+00:00

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

    本件、記述頂いたのやり方で無事実現できました。

    QBF技法とは別の手法や仕組みは今後の改善要綱で作成のし直しや根本的な作りこみの変更などを検討したいと思います。

    合わせてご指摘頂きましてありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2019-09-25T07:49:11+00:00

    [FM_新規作成]と[FM_検索修正]のレコードソースが共に

    [Q_結果]であるとして、そもそも何故に同じテーブル/クエリを

    レコードソースとする連結フォームを 2 つに分けてしまっている

    のでしょうか。

    お返事ありがとうございます。

    理由としましては、FM_新規作成は運用上どうしても「新規のレコード作成以外は許可しない」、FM_検索修正は「新規レコードの作成はできず確認と編集のみ」という機能を持たせたい点。

    FM_検索修正画面は、FM_新規作成で作られたレコードをいくつか別テーブルに格納&計算等させて「FM_検索修正画面にのみ」表示させるデータを有しています。

    また、FM_検索修正画面を開く事ができるのは限られた権限のある人だけという制限を設ける必要があったため別としています。

    レコードソース及びQ_検索結果に表示させるデータは同一ですが、それぞれ用途が別なため、利用者側(私ではありません)の要望に即した作りにしています。

    ※そもそも、技術力不足で上記条件を実現する能力がなかったという点もあります

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. 削除済み

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報

  4. Anonymous
    2019-09-25T06:52:05+00:00

    > FM_新規作成とFM_検索修正の二つのフォームにはそれぞれ、

    > txt_IDという同じ名称のテキストボックスがあります。

    > このtxt_IDに各フォームでそれぞれ入力された数字を利用し、

    > Q_結果クエリの抽出条件として指定したデータを抽出しようとしています。

    [FM_新規作成]と[FM_検索修正]のレコードソースが共に

    [Q_結果]であるとして、そもそも何故に同じテーブル/クエリを

    レコードソースとする連結フォームを 2 つに分けてしまっている

    のでしょうか。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません