クエリエディターは、単一検索や複合検索の作成に使用する多目的なエディターです。“かつ”、“または”、“以外”の論理演算子を用いて結合された複合検索を作成することができます。例えば、クエリエディターを使用して、“年齢60才以上または年収4,500,000円超"のすべての従業員を検索することができます。
検索対象として、カレントセレクションまたはテーブルの全レコードのいずれかを選択することができます。他の検索方法は、常にテーブル全体を検索します。検索条件をディスクに保存し、クエリを再度使用したい時にその条件を開くことができます。クエリエディターは最後に使用した検索条件を呼び出します。そのクエリの編集して使用することも、消去して新しいクエリを作成することもできます。カレントテーブルのフィールド、ならびにリレートテーブルのフィールドを検索することができます。また、フォーミュラを使用して上級者向けクエリを実行することもできます(フォーミュラによるクエリを参照のこと)。

エディターウィンドウには編集メニューにくわえ、セレクションアクションメニューと最近の検索メニューがあります。
注: 最近の検索メニューはセッション中に少なくとも一つのクエリが既に実行されている場合に表示されます。
編集メニューにはクエリコードを管理するためのコマンドが含まれています。

- 読み込み... と 保存...: これらのコマンドは、クエリファイルのディスクから読み込み、ディスクへの保存を管理します。同じクエリを何度も実行するのであれば、ディスクにそのクエリを保存しておきたいと思う事でしょう。クエリをディスクへ保存すれば、作成するのは一度だけで済みます。その後クエリエディターを使用する際には、使用したいクエリをディスクからロードしてクエリをクリックして実行するだけです。
クエリをディスクに保存するには、条件を指定した後、クエリエディター内の保存... をクリックします。4Dは標準のファイルを保存のダイアログボックスを開くので、そこにファイル名を入力し保存場所を指定することが出来ます。4Dクエリのファイル拡張子は".4df"です。全ての値(クエリ行、クエリアクション、フォーミュラによるクエリ)は保存されています。
保存したクエリを読み込むためには、クエリエディターの読み込み... をクリックし、 クエリファイル(拡張子".4df")を選択します。4Dはそのクエリをクエリエディターに読み込みます。ファイルをロードすると、それまでにクエリエディターに表示されていたクエリと置き換わります。
- 検索条件をコピー: 編集エリア内のフォーミュラのコードをクリップボードへとコピーします。
- リセット: エディター内で定義された全てのクエリの行を消去します。警告:行の削除は取り消しができません。
このメニューは既存のレコードのカレントセレクションに対して実行するクエリアクションを定義します。

- セレクションの作成(デフォルトのアクション): 4D はテーブル内の全てのレコードを検索し、元あったカレントセレクション見つかったレコードで上書きして表示します。
- セレクションの絞り込み: 4D は元あったカレントセレクションのレコード内のみを検索し、それを見つかったレコードで上書きして表示します。
- セレクションに追加: 4D はテーブル内の全てのレコードを検索し、見つかったレコードを元あったカレントセレクションに追加します。見つかったレコードのうち既にカレントセレクションの一部であったレコードに関しては表示されますが、二重に表示されることはありません。
- セレクションから除外: 4D はテーブル内の全てのレコードを検索し、元あったカレントセレクションから見つかったレコードを全て除外します。
このメニューは、少なくとも一つのクエリが既に実行された後にのみ表示されます。ここにはセッション中に作成された最近のクエリが表示されるので、ユーザーはいつも使っているクエリを簡単に繰り返すことが出来ます。クエリは最大10個まで保存されます。

クエリに関連したセレクションのアクション(セレクションに追加、セレクションの絞り込み等)は保存されないことに注意して下さい。
このメニューからクエリが選択されると、その詳細がビルドエリアに表示されます。その後それを直接実行したり、必要に応じて修正することができます。
クエリエディターは既定のクエリをサポートします。標準の保存されたクエリのように、既定のクエリは全ての条件を含めた完全なクエリ定義を含み、いつでもクエリエディターへと読み込むことができます。既定のクエリは配付されたアプリケーションへと埋め込むことも可能で、クエリエディターのサブメニューの一覧に直接表示されます。
既定のクエリを定義するには以下のようにします:
- データベースの"Resources"フォルダ内に"Queries"サブフォルダを作成します。
- このフォルダ内に既定のクエリとして使用したい、保存されたクエリファイル(.4df)を追加します:

カレントテーブルに関連する.4df クエリファイルが少なくとも一つ以上見つかった場合、新しい読み込み > 項目がクエリエディターの編集のメニューの最後に追加されます。この項目から、全ての既定のクエリがサブメニューとしてアクセスできます:

サブメニューの項目を選択する事で、対応するクエリがクエリエディターへと読み込まれます。
リマインダ―: サブメニューに表示されるのは、カレントテーブルに関係するクエリファイルのみです。
クエリを作成する際、指定した値とデータベースの内容とを比較する方法を4D に対して指示しなければなりません。例えば名字が“佐藤”と等しいというクエリの場合は、等しいという比較演算子を使用します。これは4Dに対して、名字 フィールドの値と文字列である“佐藤”とを比較するように指示します。
英数字タイプの値に関する比較では、大文字小文字が区別されません。名字が“Smith”である人を検索すると、“smith”や“SMITH”、“sMith”などを含むレコードが検出されます。
含むおよび含まない比較演算子を用いたクエリは、常にシーケンシャル検索になります。キーワード 演算子は文字型とテキスト型のフィールドに対してのみ使用可能です。この型のクエリについての詳細は4D Language Reference マニュアルの比較演算子を参照して下さい。
それぞれの型において使用できる演算子は以下の通りです:
演算子 | 文字/テキスト | 日付 | 時間 | ブール | 数値 | ピクチャ | 詳細 |
空の文字列/= 空 | x | | | | | x | フィールドにはデータがありません。 |
≠空の文字列/≠空 | x | | | | | x | フィールドにデータはあります。 |
と等しい | | | | | x | | 数値用の標準の演算子です。 |
>= | | | | | x | |
> | | | | | x | |
<= | | | | | x | |
< | | | | | x | |
≠ | | | | | x | |
偽(false)である | | | | x | | | ブール用の標準の演算子です。 |
真(true)である | | | | x | | |
= | x | x | x | | | | フィールドは入力された値と完全に一致します。 |
≠ | x | x | x | | | | フィールドは入力された値と異なります。 |
>= | x | x | x | | | | フィールドの値は、入力された値と一致するかまたは大きいです(*) |
> | x | x | x | | | | フィールドの値は入力された値を超えます(*) |
<= | x | x | x | | | | フィールドの値は、入力された値と一致するかまたは小さいです(*) |
< | x | x | x | | | | フィールドの値は入力された値未満です(*) |
範囲指定 (以上以下) | | x | | | | | 最初の日付は二番目以前の日付である必要があります。入力された日付も含め、間にある日付のフィールドを検索します |
範囲指定 | | x | | | | | 最初の日付は二番目以前の日付である必要があります。入力された日付は含めずに検索します |
= 今日 | | x | | | | | カレントの日付が表示されている |
= 昨日 | | x | | | | | 一日前の日付が表示されている |
= 今週(月・四半期・年)中 | | x | | | | | とり得る値 :- 週(日-土) -週(月-日) -週(月-金) -月 -四半期 -年 これらの値は、カレントの日付を基準として算出されます。 |
= 昨週(月・四半期・年)中 | | x | | | | |
= 翌週(月・四半期・年)中 | | x | | | | |
= 時間(分・秒)以内の過去 | | | x | | | | とり得る値 : -時間 -分 -秒 これらの値は、カレントの時刻を基準に算出されます。 |
= 時間(分・秒)以内の未来 | | | x | | | |
範囲指定(以上以下) | x | | x | | x | | フィールドの値は入力された値の間です(入力された値も含みます)。(*) |
範囲指定 | x | | x | | x | | フィールドの値は入力された値の間です(入力された値は含まれません)。(*) |
= | | | x | | | | とり得る値 : -時間 -分 -秒 |
≠ | | | x | | | |
>= | | | x | | | |
> | | | x | | | |
<= | | | x | | | |
< | | | x | | | |
前方一致 | x | | | | | | テキスト用の標準の演算子です。 |
後方一致 | x | | | | | |
含む | x | | | | | |
含まない | x | | | | | |
キーワード | x | | | | | x | 入力されたキーワードを検索します。「すべて」(を含むフィールドを検索する)と「どれか」(を含むフィールドを検索する)のどちらかを指定することが出来ます。 |
キーワード(含まない) | x | | | | | x |
<= | | | | | | x | ピクチャのサイズに基づいて検索します。単位はバイト、KB、MB、GBから選択することが出来ます。 |
>= | | | | | | x |
(*) 文字列の場合、クエリはアルファベットに基づいています(a<bとみなされます)。例えば、「名前が "don" よりも後である」というタイプのクエリを実行した場合、検索結果には Donna、Don、Juan、Smith、、、等が含まれますが、AlvesやDominickはヒットしません。
4Dでは、クエリを指定しやすくするためにワイルドカード記号 (@) が用意され、文字またはテキストタイプのフィールドに関する検索において、1桁以上の文字を置き換えることができます。例えば、あるフィールドで“佐藤四 太郎”という名前をすべて探し出す場合、いくつかの方法を用いて検索を指定することができます:
検索条件: | 検出される値 |
佐藤@ | “佐藤”で始まるすべての値 |
@太郎 | “太郎”で終わるすべての値 |
佐@太郎 | “佐”で始まり、“太郎”で終わるすべての値 |
@太@ | “太”を含む全ての値 |
注: ワイルドカード記号は"キーワードを含む"と組み合わせて使用することも可能です。例えば、“‘anti@’を含む注記を探す”というのは有効な検索です。
1つまたは複数のフィールドを検索することができます。1つのフィールドに基づくクエリは、“単一検索”と呼ばれます。例えば、名字が“佐藤”に等 しいという検索は単一検索です。単一検索を実行すると、4Dはデータベースを検索する際に、1つのフィールドの内容を調べます。
複数のフィールドに基づく検索は、“複合検索”と呼ばれます。複合検索を行う場合は、論理演算子を使用して個々のクエリを組み合わせます。論理演算子により、それぞれのクエリの結果を組み合わせる方法を4Dに指示します。3種類の論理演算子があります:
- かつ: この演算子は、2つの条件を同時に満たすレコードをすべて検索します。例えば、“技術部門で働き、かつ給与が5,000,000円以上の従業員をすべて検索する”というクエリは、給与が5,000,000円以上である技術部門の従業員のレコードだけを探し出します。
- または: この演算子は、2つの単一検索のいずれかの条件を満たすレコードを検索します。例えば、“技術部門で働く従業員、または給与が5,000,000円以上で ある従業員をすべて検索する”というクエリは、技術部門で働く従業員、および働く部門とは関係なく給与が5,000,000円である従業員をすべて探し出 します。
- 以外: この演算子は、“~ではない”と同じです。例えば、“給与が5,000,000円以上である従業員以外の技術者をすべて検索する”というクエリは、給与が5,000,000円以上である技術者を除外します。
複数の条件を組み合わせたクエリを実行するためには、必要な条件の数の分だけ行を追加ボタン
をクリックして下さい。
論理演算子を使用すると、“東京または大阪に所属し、かつ販売高が2,000,000円より少なく、かつ歩合が30パーセントを越える販売員を検索する”と いうような複合検索を作成することができます。次の図は、このクエリがクエリエディター上で指定されている様子を示しています:

このクエリが実行されると、4Dは低い販売高売上に対して高い歩合を得ている、東京または大阪の販売員をすべて検索します。比較演算子と論理演算子を使用するこの他の例題は、各検索メソッドにおいて紹介されています。