概要
| この記事の結論 Accessでは、クエリの抽出条件や計算式を作る画面を「式ビルダー」、レコードソースなどのSQLを組み立てる画面を「クエリビルダー」として区別します。抽出条件を入力するならクエリのデザインビューで対象セルを選び、ビルダーから式を作成します。 |
この記事でわかること
- 開いた画面の名称を確認
- 入力場所で構文が変わる
- 日付とNullの条件を決める
- 結果をサンプルで検算
この記事の主な内容
- クエリビルダーと式ビルダーを区別する
- 練習用の選択クエリを用意する
- 式ビルダーで抽出条件を作る
- 演算フィールドで金額を計算する
- フォームの入力値を条件に使う
- クエリビルダーで値集合ソースを作る
- よくあるエラーと結果の検証
- よくある質問
想定読了時間:約12分~16分
クエリビルダーと式ビルダーを区別する
Accessで「ビルダー」を開くときは、どこから開いたかを確認しましょう。抽出条件や計算式を組み立てる補助画面が式ビルダーです。一方、フォームのレコードソースやコンボボックスの値集合ソースに使うSQLを、テーブルと項目を選んで作る画面がクエリビルダーです。
この記事では、検索時に混同されやすい二つを区別して説明します。クエリは必要なデータを抽出・計算するための問い合わせ、式は条件や計算の内容を表す記述です。式ビルダーを使っても、抽出対象のテーブルや結合関係まで自動で正しく決まるわけではありません。
| 比較点 | 式ビルダー | クエリビルダー |
|---|---|---|
| 主に作るもの | 条件や計算式 | データ取得用のSQL |
| 代表的な起点 | 抽出条件、計算欄、式を受け付けるプロパティ | レコードソース、値集合ソース |
| 主な画面要素 | 式の入力欄、関数・項目の一覧 | 元テーブル、項目、抽出条件のグリッド |
| 完了後の確認 | 式の構文と計算結果 | SQL、件数、列、並び順 |
フィールドの演算式を作りたいなら、まず対象クエリのデザインビューを開きます。コンボボックスの候補を取得したいなら、値集合ソースのビルドボタンが入口です。名称だけを覚えるより、「今どの設定を編集しているか」を確認すると迷いにくくなります。

練習用の選択クエリを用意する
最初は、データを抽出する選択クエリで練習します。更新・削除・追加クエリへ変更する必要はありません。既存データベースのコピーを用意し、説明用のT_売上例を作ると、条件を変えたときの結果を少ない件数で比較できます。
4件のサンプルを用意する
売上IDをオートナンバー型の主キー、売上日を日付/時刻型、部門を短いテキスト型、数量を数値型、単価を通貨型とします。以下は説明用の値です。3行目は単価を未入力のNullにし、ゼロの4行目との違いを試します。
| 売上日 | 部門 | 数量 | 単価 |
|---|---|---|---|
| 2026/10/01 09:00 | 営業 | 2 | 500 |
| 2026/10/31 15:30 | 営業 | 1 | 800 |
| 2026/11/01 00:00 | 管理 | 3 | Null(未入力) |
| 2026/10/15 10:00 | 管理 | 0 | 500 |
[作成]→[クエリデザイン]を開き、T_売上例を追加します。売上ID、売上日、部門、数量、単価を下部グリッドへ追加し、Q_売上練習として保存します。データシートビューで4件が出ることを確認してから、デザインビューへ戻ります。
選択クエリ自体はデータを抽出しますが、結果画面でセルを編集すると、更新可能なクエリでは元テーブルの値が変わることがあります。結果は件数や値を確認する用途で扱い、今回の練習では結果のセルを直接編集しません。

式ビルダーで抽出条件を作る
抽出条件は、各レコードを結果に含めるかを判断する条件です。まず単純な条件を直接入力し、複雑な式が必要になったら式ビルダーで関数やフィールドを選びます。ビルダーは入力の補助なので、短い式を手入力しても構いません。参考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ビューでは括弧で条件の範囲も確認できます。

演算フィールドで金額を計算する
計算結果をクエリの列として表示するときは、空いている列の[フィールド]行へ演算式を入力します。数量×単価なら、次のように列名、コロン、計算式の順で記述します。これは抽出条件の行へ入れる式とは役割が異なります。
明細金額: [数量] * [単価]
サンプルの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の教科書のお問い合わせ窓口から、状況に合う対応方法を相談できます。
フォームの入力値を条件に使う
毎回クエリを編集せず検索期間を変えたい場合は、検索フォームの入力欄を参照します。ここでは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_検索を開いたままにします。日付を変更した後はクエリを開き直すか、結果表示用フォーム等を再クエリして結果へ反映させます。開始日または終了日が空欄でも検索させたい場合は、別の条件設計が必要です。空欄を自動で全件扱いと決めつけないでください。

クエリビルダーで値集合ソースを作る
コンボボックスの候補を商品マスターから取得する場合は、値集合ソースのビルドボタンからクエリビルダーを開けます。こちらは関数一覧から式を選ぶ画面ではなく、テーブル・列・条件・並び順を設定してSQLを作る画面です。
参考4
商品名順の候補を作る手順
1. フォームをデザインビューで開き、対象のコンボボックス本体を選びます。
2. プロパティの値集合タイプを[テーブル/クエリ]にします。
3. 値集合ソースの右端のビルドボタンからクエリビルダーを開きます。
4. M_商品を追加し、商品ID・商品名をこの順にグリッドへ追加します。商品名の並べ替えを昇順にします。
5. SQLや結果を確認してビルダーを閉じ、値集合ソースへの変更を保存します。保存先の確認が出た場合は内容を読んで反映します。
例えば次のSQLになります。これは候補を取り出す設定であり、選んだ値をどのフィールドへ保存するかは別に設定します。コンボボックスのコントロールソース、連結列、列数、列幅も確認してください。
SELECT [商品ID], [商品名]
FROM [M_商品]
ORDER BY [商品名], [商品ID];
フォーム全体のレコードソースでも、取得するテーブルや項目をデザイン画面から設定できます。既存フォームのレコードソースを変える場合は、入力欄が参照しているフィールドを消さないように注意します。表示列が増減したら、保存と編集の可否も確かめます。

よくあるエラーと結果の検証
式が保存できることと、期待したデータが出ることは別です。構文、参照先、業務上の意味の三つを順に確認します。まず少ない件数で予想した結果を作り、クエリの結果と比較すれば、エラーにならない条件の間違いも見つけやすくなります。
| 症状 | 調べること | 修正の方向 |
|---|---|---|
| パラメーター入力が出る | フィールド名、フォーム名、入力欄名 | 誤記を直し、必要なフォームを開く |
| 構文エラーになる | 括弧、引用符、カンマ、未置換の仮文字 | 半角記号と引数を確認 |
| 型が一致しない | 日付・文字・数値の混在 | 元フィールドの型と条件の型をそろえる |
| 件数が多すぎる | ORの行、結合条件 | 条件のまとまりと結合を確認 |
| 件数が少なすぎる | 終了日時、Null、共通条件 | 境界値と未入力を含む例で確認 |
| 計算結果が空欄になる | 計算元のNull | 未入力の意味を決めて処理 |
予期しないパラメーター入力を放置しない
Accessが項目名を見つけられず、入力を求める名前として扱っている場合があります。毎回適当な値を入力して進めると、参照ミスを隠してしまいます。表示された名前を控え、テーブルのフィールド、入力欄の名前、フォームの開閉状態と照合してください。
検索対象に結合を加えた場合は、同じ売上が複数行になっていないかも確認します。明細などの複数行と結合すれば行数が増えることがあります。重複の表示だけを消す前に、1行の意味と結合関係が目的に合っているかを見直しましょう。

完成後の確認表
| テスト | この例での期待結果 |
|---|---|
| 条件なし | 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の教科書のお問い合わせ窓口から、状況に合う対応方法を相談できます。
参考情報
参考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