Microsoft Access 掲示板

他のテーブル(クエリ)にIDがあり/なし判別をフィールドに

6 コメント
views

毎回大変お世話になっています。今回は他のテーブル(クエリ)にIDあり/なしをフィールドに表示させたいのです。
テーブル([T売掛対象会社])があります(売掛先ID:社名等)を基に登録フォーム用ソースにクエリQ1を作成してます。
そのQ1のフィールドに取引があり/なしを表示させたいのです。取引ありなしはQ2([Q売掛金の締日回収期日])を参照する形です。Q2には売掛先ID、発生日付等があり取引がある分しかありません(同じ売掛先IDで日付違い等もあり)。
Q1のフィールドに下記を貼り付けると一応は表示されるのですが、少し動作が重たいので他の方法があるかなと思いまして。
 = DLookup("[売掛先ID]", "[Q売掛金の締日回収期日]", "[売掛先ID] = " & [T売掛対象会社].[売掛先ID])
要はQ1の売掛先IDに対して取引履歴があるかどうかを表示させたいのです。但しQ1は登録フォーム用のソースにしてますので入力可能にしたいのです。
いいアイデアがあれば宜しくお願いします。

beginner
作成: 2025/06/30 (月) 14:37:14
通報 ...
1
りんご 2025/06/30 (月) 21:03:58 935bc@0e907

テーブル([T売掛対象会社])があります

 テーブル名から、売掛金取引ありの会社を登録する得意先テーブルと読めます。いずれ最初の売掛金が発生する事が決まっているのに、取引あり/なしを表示する意味があるのかしら?例えば、最初の取引を登録する流れの中で得意先として登録すればいいんじゃない?

2

登録フォーム用ソースにクエリQ1を作成してます。

その連結フォームをどのビューで開こうとされているのでしょうか。

  • 単票フォーム

  • 帳票フォーム

  • データシート

  • 分割フォーム

3
beginner 2025/07/01 (火) 08:31:31 61dd6@2128d

りんごさんのご意見はもっともなのですが、売掛先は他のファイルからエクスポートしたリストがあり(その全てが売掛先の可能性あり)それが現時点で取引実績ありかどうかの判別なのです。
skさん 帳票フォームがありそれに会社毎に実績ありかどうか表示させたいのです。最終的にはフォーム上でそのフィルター条件もONしたいので。

4
りんご 2025/07/01 (火) 20:04:56 935bc@0e907 >> 3

他のファイルからエクスポートしたリストがあり(その全てが売掛先の可能性あり)
 要するに、取引先の事かしら。
 マスタテーブルに得意先フラグを追加して、クエリQ2の得意先フラグをありに更新すればいいんじゃない?
 何はともあれ、テーブル構造とクエリを提示しないとね。

5

他のファイルからエクスポートしたリスト

Q2には売掛先ID、発生日付等があり取引がある分しかありません(同じ売掛先IDで日付違い等もあり)。

  • [T売掛対象会社]とは別に、各企業との取引実績が一定の期間に渡って記録されたファイル( CSV ファイルや Excel ブックなど)を元にインポートされたテーブル(以下[T取引実績]と仮定する)が存在する。

  • [T取引実績]にも[売掛先ID]というフィールドが存在するが、その値は一意ではない([売掛先ID]の値が他のレコードと重複するケースが含まれている)。

  • [Q2]は[T取引実績]を参照する選択クエリである(具体的にどのような抽出、集計、計算、変換を行なっているかは不明)。

という前提であるとして、

帳票フォームがありそれに会社毎に実績ありかどうか表示させたい

Q1は登録フォーム用のソースにしてますので入力可能にしたい

例えば、次のような方法が考えられます。

  1. [売掛先ID](主キー。データ型は[T取引実績]に準拠)と[取引実績件数](長整数型)という 2 つのフィールドが定義されたテーブル(以下[T売掛先別取引実績集計]と仮定する)を別途作成しておく。

  2. [T売掛先別取引実績集計]の全てのレコードを削除する削除クエリをあらかじめ作成しておく。

  3. [T取引実績]のレコードを[売掛先ID]でグループ化し、グループごとのレコード件数を集計した結果を[T売掛先別取引実績集計]に追加する追加クエリをあらかじめ作成しておく。

  4. [Q1](もしくは[T売掛対象会社])と[T売掛先別取引実績集計]を左外部結合し、[Q1]の全てのフィールドと[T売掛先別取引実績集計]の[取引実績件数]を選択した結果を返すクエリ(または SQL ステートメント)を[登録フォーム]のレコードソースとする。

  5. [登録フォーム]の詳細セクション上に、[取引実績件数]をコントロールソースとする連結テキストボックスを配置し、その[編集ロック]プロパティを「はい」に設定する。

  6. [登録フォーム]の[開く時]イベントの発生時に、上記 2 と 3 のクエリ(もしくはこれらに相当する SQL )を続けて実行し、フォームを再クエリするイベントマクロまたはイベントプロシージャを呼び出すようにする。

もし[登録フォーム]において新規レコードの追加を許可する場合は、更にもう一工夫が必要となるでしょう。

6
beginner 2025/07/02 (水) 12:19:03 61dd6@2128d

りんごさんありがとうございます。構成考えてみますね。
skさんありがとうございます。そういう手がありますね。試してみます。
お手数かけました。