Accessクエリビルダーの使い方 式ビルダーとの違いと条件設定

概要

この記事の結論
Accessでは、クエリの抽出条件や計算式を作る画面を「式ビルダー」、レコードソースなどのSQLを組み立てる画面を「クエリビルダー」として区別します。抽出条件を入力するならクエリのデザインビューで対象セルを選び、ビルダーから式を作成します。

この記事でわかること

  • 開いた画面の名称を確認
  • 入力場所で構文が変わる
  • 日付とNullの条件を決める
  • 結果をサンプルで検算

この記事の主な内容

  1. クエリビルダーと式ビルダーを区別する
  2. 練習用の選択クエリを用意する
  3. 式ビルダーで抽出条件を作る
  4. 演算フィールドで金額を計算する
  5. フォームの入力値を条件に使う
  6. クエリビルダーで値集合ソースを作る
  7. よくあるエラーと結果の検証
  8. よくある質問

想定読了時間:約12分~16分


クエリビルダーと式ビルダーを区別する

Accessで「ビルダー」を開くときは、どこから開いたかを確認しましょう。抽出条件や計算式を組み立てる補助画面が式ビルダーです。一方、フォームのレコードソースやコンボボックスの値集合ソースに使うSQLを、テーブルと項目を選んで作る画面がクエリビルダーです。

この記事では、検索時に混同されやすい二つを区別して説明します。クエリは必要なデータを抽出・計算するための問い合わせ、式は条件や計算の内容を表す記述です。式ビルダーを使っても、抽出対象のテーブルや結合関係まで自動で正しく決まるわけではありません。

比較点式ビルダークエリビルダー
主に作るもの条件や計算式データ取得用のSQL
代表的な起点抽出条件、計算欄、式を受け付けるプロパティレコードソース、値集合ソース
主な画面要素式の入力欄、関数・項目の一覧元テーブル、項目、抽出条件のグリッド
完了後の確認式の構文と計算結果SQL、件数、列、並び順

フィールドの演算式を作りたいなら、まず対象クエリのデザインビューを開きます。コンボボックスの候補を取得したいなら、値集合ソースのビルドボタンが入口です。名称だけを覚えるより、「今どの設定を編集しているか」を確認すると迷いにくくなります。

Accessの二つのビルダーの違いを説明する図

練習用の選択クエリを用意する

最初は、データを抽出する選択クエリで練習します。更新・削除・追加クエリへ変更する必要はありません。既存データベースのコピーを用意し、説明用のT_売上例を作ると、条件を変えたときの結果を少ない件数で比較できます。

4件のサンプルを用意する

売上IDをオートナンバー型の主キー、売上日を日付/時刻型、部門を短いテキスト型、数量を数値型、単価を通貨型とします。以下は説明用の値です。3行目は単価を未入力のNullにし、ゼロの4行目との違いを試します。

売上日部門数量単価
2026/10/01 09:00営業2500
2026/10/31 15:30営業1800
2026/11/01 00:00管理3Null(未入力)
2026/10/15 10:00管理0500

[作成]→[クエリデザイン]を開き、T_売上例を追加します。売上ID、売上日、部門、数量、単価を下部グリッドへ追加し、Q_売上練習として保存します。データシートビューで4件が出ることを確認してから、デザインビューへ戻ります。

選択クエリ自体はデータを抽出しますが、結果画面でセルを編集すると、更新可能なクエリでは元テーブルの値が変わることがあります。結果は件数や値を確認する用途で扱い、今回の練習では結果のセルを直接編集しません。

Accessの選択クエリで安全に練習を説明する図

式ビルダーで抽出条件を作る

抽出条件は、各レコードを結果に含めるかを判断する条件です。まず単純な条件を直接入力し、複雑な式が必要になったら式ビルダーで関数やフィールドを選びます。ビルダーは入力の補助なので、短い式を手入力しても構いません。参考1

開く場所と基本操作

1. クエリのデザインビューで、条件を設定するフィールドの[抽出条件]セルを選びます。

2. 右クリックの[ビルド]など、式ビルダーを開く操作を選びます。式を受け付ける欄ではCtrl+F2を使える場合もあります。

3. 式の入力欄に条件を入力します。詳細表示では、式の要素・分類・値からフィールドや関数を選べます。

4. 関数を挿入したら、引数の仮文字を実際の項目名や値へ置き換えます。

5. 確定してクエリへ戻り、データシートビューで件数と内容を確認します。

例えば数量フィールドの抽出条件に「>=2」を入れると、サンプルでは数量2と3の2件が対象になります。部門フィールドに「”営業”」を入れれば営業の2件です。文字列は引用符、フィールド名は角括弧で区別し、全角記号の混入にも注意してください。

ANDとORは行の置き方で変わる

異なる列の条件を同じ行に置くとAND、別の条件行に分けるとORとして組み合わされます。ANDは「両方を満たす」、ORは「いずれかを満たす」です。条件を置く行が変わるだけで、結果件数が大きく変わります。参考2

条件の配置意味サンプルでの件数
部門に”営業”、同じ行の数量に>=2営業で、かつ数量2以上1件
部門の抽出条件に”営業”、別の「または」行の数量に>=2営業、または数量2以上3件
部門に”営業” Or “管理”二つの部門のいずれか4件

複数のOR条件に共通の制約を付ける場合は、条件のまとまりごとに考えます。例えば「営業または管理、かつ数量2以上」は、部門の一つのセルにOR条件を書き、同じ行の数量に>=2を置く方法があります。SQLビューでは括弧で条件の範囲も確認できます。

AccessのANDとORの条件の置き方を説明する図

演算フィールドで金額を計算する

計算結果をクエリの列として表示するときは、空いている列の[フィールド]行へ演算式を入力します。数量×単価なら、次のように列名、コロン、計算式の順で記述します。これは抽出条件の行へ入れる式とは役割が異なります。

明細金額: [数量] * [単価]

サンプルの1件目は1,000、2件目は800、4件目は0になります。3件目は単価がNullなので結果もNullです。計算結果を出すことと、元テーブルへ金額を保存することは別であり、この演算列を追加しただけで金額フィールドが新設されるわけではありません。

入力場所で先頭の記号が違う

入力する場所記述例意味
クエリのフィールド行明細金額: [数量]*[単価]名前を付けた計算列
数量の抽出条件行>=2数量を絞る条件
フォームの計算欄のコントロールソース=[数量]*[単価]画面上の計算表示

Excelの数式と同じ感覚で、すべての先頭に「=」を付けないようにします。また、クエリで付けた計算列名と既存のフィールド名が重なると、参照が分かりにくくなります。用途が分かる名前を付け、元項目と計算結果を区別してください。

Nullはゼロと同じではない

Nullは値がない状態です。単価未定と無料の単価0は業務上の意味が異なります。表示や集計の都合だけで、未入力を無条件に0へ置き換えると、登録漏れを発見できなくなることがあります。まず「未入力ならどう扱うか」を決めます。

未入力をゼロとして計算する要件が明確なら、Nzで代わりの値を指定できます。クエリでは第2引数を省略せず、例えば「Nz([数量],0) * Nz([単価],0)」と記述します。ただし、単価未確定を探す確認クエリも残すなど、意味の違いを隠さない工夫が必要です。参考3

Accessの計算式の入力場所を区別を説明する図

Accessの教科書でクエリの条件と集計を相談する

ここまでの手順を試しても解決しない場合や、既存業務への影響を判断しにくい場合は、対象画面・現在の設定・再現手順を整理してご相談ください。Accessの教科書のお問い合わせ窓口から、状況に合う対応方法を相談できます。


フォームの入力値を条件に使う

毎回クエリを編集せず検索期間を変えたい場合は、検索フォームの入力欄を参照します。ここではF_検索に、非連結のテキストボックスtxt開始日とtxt終了日を置きます。ラベルの標題ではなく、コントロールの「名前」を式で使います。

終了日の時刻まで含める

売上日に時刻が含まれる場合、「10月31日以下」という条件は10月31日午前0時までと解釈され、その日の午後の売上が抜けることがあります。日単位の検索なら、開始日以上かつ終了日の翌日未満という範囲にすると、終了日の時刻を含められます。

次のSQLは、両方の日付入力を必須とし、入力値には時刻を含めない前提です。クエリのSQLビューに入力する例であり、実際のフォーム名・入力欄名・テーブル名に合わせて変更してください。DateAddの”d”は日単位の加算を表します。

PARAMETERS
    [Forms]![F_検索]![txt開始日] DateTime,
    [Forms]![F_検索]![txt終了日] DateTime;
SELECT [売上ID], [売上日], [部門], [数量], [単価]
FROM [T_売上例]
WHERE [売上日] >= [Forms]![F_検索]![txt開始日]
  AND [売上日] < DateAdd(“d”, 1,
      [Forms]![F_検索]![txt終了日]);

開始日2026/10/01、終了日2026/10/31なら、サンプルの1・2・4件目が対象です。10月31日15:30を含み、11月1日00:00を含まないことを確かめます。DateAddについてはMicrosoftの関数仕様も参照してください。

空欄と日付の前後関係を決める

この例では、検索前に両方の入力、正しい日付、開始日が終了日以下であることを確認します。入力欄の表示書式を日付にしただけでは、内部の時刻値が必ず除かれるわけではありません。日付だけを受け付ける入力ルールを用意するか、必要に応じて日単位へ正規化します。

クエリを実行するときはF_検索を開いたままにします。日付を変更した後はクエリを開き直すか、結果表示用フォーム等を再クエリして結果へ反映させます。開始日または終了日が空欄でも検索させたい場合は、別の条件設計が必要です。空欄を自動で全件扱いと決めつけないでください。

Accessのフォームからクエリへ条件を渡すを説明する図

クエリビルダーで値集合ソースを作る

コンボボックスの候補を商品マスターから取得する場合は、値集合ソースのビルドボタンからクエリビルダーを開けます。こちらは関数一覧から式を選ぶ画面ではなく、テーブル・列・条件・並び順を設定してSQLを作る画面です。
参考4

商品名順の候補を作る手順

1. フォームをデザインビューで開き、対象のコンボボックス本体を選びます。

2. プロパティの値集合タイプを[テーブル/クエリ]にします。

3. 値集合ソースの右端のビルドボタンからクエリビルダーを開きます。

4. M_商品を追加し、商品ID・商品名をこの順にグリッドへ追加します。商品名の並べ替えを昇順にします。

5. SQLや結果を確認してビルダーを閉じ、値集合ソースへの変更を保存します。保存先の確認が出た場合は内容を読んで反映します。

例えば次のSQLになります。これは候補を取り出す設定であり、選んだ値をどのフィールドへ保存するかは別に設定します。コンボボックスのコントロールソース、連結列、列数、列幅も確認してください。

SELECT [商品ID], [商品名]
FROM [M_商品]
ORDER BY [商品名], [商品ID];

フォーム全体のレコードソースでも、取得するテーブルや項目をデザイン画面から設定できます。既存フォームのレコードソースを変える場合は、入力欄が参照しているフィールドを消さないように注意します。表示列が増減したら、保存と編集の可否も確かめます。

Accessの値集合ソースを作る手順を説明する図

よくあるエラーと結果の検証

式が保存できることと、期待したデータが出ることは別です。構文、参照先、業務上の意味の三つを順に確認します。まず少ない件数で予想した結果を作り、クエリの結果と比較すれば、エラーにならない条件の間違いも見つけやすくなります。

症状調べること修正の方向
パラメーター入力が出るフィールド名、フォーム名、入力欄名誤記を直し、必要なフォームを開く
構文エラーになる括弧、引用符、カンマ、未置換の仮文字半角記号と引数を確認
型が一致しない日付・文字・数値の混在元フィールドの型と条件の型をそろえる
件数が多すぎるORの行、結合条件条件のまとまりと結合を確認
件数が少なすぎる終了日時、Null、共通条件境界値と未入力を含む例で確認
計算結果が空欄になる計算元のNull未入力の意味を決めて処理

予期しないパラメーター入力を放置しない

Accessが項目名を見つけられず、入力を求める名前として扱っている場合があります。毎回適当な値を入力して進めると、参照ミスを隠してしまいます。表示された名前を控え、テーブルのフィールド、入力欄の名前、フォームの開閉状態と照合してください。

検索対象に結合を加えた場合は、同じ売上が複数行になっていないかも確認します。明細などの複数行と結合すれば行数が増えることがあります。重複の表示だけを消す前に、1行の意味と結合関係が目的に合っているかを見直しましょう。

Accessのエラーを三つの観点で確認を説明する図

完成後の確認表

テストこの例での期待結果
条件なし4件
営業かつ数量2以上1件
営業または数量2以上3件
10月1日〜31日の日単位検索3件。31日午後を含む
数量×単価1000、800、Null、0
検索フォームを閉じて実行参照できない状態を検知し、運用を見直す

ビルダーは、式やSQLを作る作業を助ける道具です。入力場所を選び、データ型と条件の意味を決め、結果を確かめる判断は作成者が行います。小さな例で正しさを確認してから、本番の件数や結合へ広げると、調査しやすいクエリになります。


よくある質問

同じではありません。式ビルダーは関数、フィールド、演算子などを使って条件や計算式を組み立てる画面です。クエリビルダーは、レコードソースや値集合ソースに使うSQLを、元テーブルや列を選んで作る画面です。どちらもビルドボタンから開くため混同されやすいのですが、編集する対象が異なります。関数や式の一覧が見えるか、テーブルと抽出条件のグリッドが見えるかを確認すると、手順を選びやすくなります。

まずデザインビューで、式を受け付けるセルやプロパティを選んでいるか確認します。入力欄のラベルを選んでいる場合や、データを閲覧するビューでは、目的のビルダーが出ないことがあります。プロパティシートの選択対象と項目名を見直してください。式を受け付ける欄では、ビルドボタンやCtrl+F2が利用できる場合があります。Runtimeや設計変更が制限された配布版では、開発用のAccessと原本が必要になる点にも注意します。

入力場所によって異なります。フォームの計算欄では「=[数量]*[単価]」のように記述しますが、クエリのフィールド行では「明細金額: [数量]*[単価]」という形で列名を付けます。抽出条件には「>=2」や「Is Null」など、比較する条件を置きます。Excelの数式と同じ感覚で、すべてにイコールを付けないようにしてください。コピーするときは式だけでなく、どの欄へ入れる例なのかも確認することが大切です。

存在しないフィールド名や入力欄名を参照している可能性があります。また、検索フォームを閉じたまま実行すると、そのフォームの値を取得できません。入力を求められた名前を控え、実際の名称と1文字ずつ照合してください。画面に見えるラベル名とコントロールの名前は一致しないことがあります。意図的に作ったパラメーターでなければ、毎回値を入力して回避せず、参照先とフォームの開閉状態を直してから再実行します。

日付フィールドに時刻が含まれていないか確認してください。終了日を日付だけで指定すると、その日の午前0時を境界として扱い、午後のレコードが条件から外れることがあります。日単位の検索では「開始日以上、終了日の翌日未満」という条件が分かりやすい方法です。例えば10月31日までなら、11月1日午前0時より前を対象にします。検索フォームの入力にも時刻が入っていないか確認し、境界日の朝・午後・翌日で試してください。

業務上の意味を確認してから判断します。Nullは未入力や未確定、ゼロは数量なしや無料などを表すことがあり、同じ意味とは限りません。単価未定をゼロに変えると、売上が少なく見えたり入力漏れに気付かなかったりします。ゼロとして計算する要件が決まっている場合は、Nzで置換値を明示できます。ただし、元の未入力を確認するクエリやチェックも用意し、表示を整えるためだけに重要な違いを消さないようにしましょう。

単純な抽出条件や計算式は、VBAを書かずに作れることが多くあります。ただし、検索前の入力確認、複数画面の連携、エラー案内などの操作制御まで、式ビルダーだけで完結するとは限りません。データの抽出・集計はクエリで行い、画面の動きはマクロやVBAで補うと役割を整理できます。まず短い式で目的を満たせるか試し、必要な制御だけを追加してください。ビルダーが使えたことと、業務上の結果が正しいことも分けて検証します。

関連記事

Accessで文字列を結合する方法

Accessコンボボックスに複数列を表示する方法と保存値の設定

Accessフォームの作成方法と用途に合う画面の選び方

Accessの教科書でクエリの条件と集計を相談する

ここまでの手順を試しても解決しない場合や、既存業務への影響を判断しにくい場合は、対象画面・現在の設定・再現手順を整理してご相談ください。Accessの教科書のお問い合わせ窓口から、状況に合う対応方法を相談できます。


参考情報

参考1 Microsoft 式ビルダーを使う
https://support.microsoft.com/en-us/access/use-the-expression-builder

参考2 Microsoft 抽出条件の例
https://support.microsoft.com/en-us/access/examples-of-query-criteria

参考3 Microsoft Nzメソッド
https://learn.microsoft.com/en-us/office/vba/api/access.application.nz

参考4 Microsoft リストボックスとコンボボックス
https://support.microsoft.com/en-us/access/add-a-list-box-or-combo-box

参考5 Microsoft レコードソース
https://learn.microsoft.com/en-us/office/vba/api/access.form.recordsource

TOP