4D v16.3

クエリエディター

ホーム

 
4D v16.3
クエリエディター

クエリエディター  


 

 

クエリエディターは、単一検索や複合検索の作成に使用する多目的なエディターです。“かつ”、“または”、“以外”の論理演算子を用いて結合された複合検索を作成することができます。例えば、クエリエディターを使用して、“年齢60才以上または年収4,500,000円超"のすべての従業員を検索することができます。

検索対象として、カレントセレクションまたはテーブルの全レコードのいずれかを選択することができます。他の検索方法は、常にテーブル全体を検索します。検索条件をディスクに保存し、クエリを再度使用したい時にその条件を開くことができます。クエリエディターは最後に使用した検索条件を呼び出します。そのクエリの編集して使用することも、消去して新しいクエリを作成することもできます。カレントテーブルのフィールド、ならびにリレートテーブルのフィールドを検索することができます。また、フォーミュラを使用して上級者向けクエリを実行することもできます(フォーミュラによるクエリを参照のこと)。

エディターウィンドウには編集メニューにくわえ、セレクションアクションメニューと最近の検索メニューがあります。

注: 最近の検索メニューはセッション中に少なくとも一つのクエリが既に実行されている場合に表示されます。

編集メニューにはクエリコードを管理するためのコマンドが含まれています。

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

このメニューは既存のレコードのカレントセレクションに対して実行するクエリアクションを定義します。

  • セレクションの作成(デフォルトのアクション): 4D はテーブル内の全てのレコードを検索し、元あったカレントセレクション見つかったレコードで上書きして表示します。
  • セレクションの絞り込み: 4D は元あったカレントセレクションのレコード内のみを検索し、それを見つかったレコードで上書きして表示します。
  • セレクションに追加: 4D はテーブル内の全てのレコードを検索し、見つかったレコードを元あったカレントセレクションに追加します。見つかったレコードのうち既にカレントセレクションの一部であったレコードに関しては表示されますが、二重に表示されることはありません。
  • セレクションから除外: 4D はテーブル内の全てのレコードを検索し、元あったカレントセレクションから見つかったレコードを全て除外します。

このメニューは、少なくとも一つのクエリが既に実行された後にのみ表示されます。ここにはセッション中に作成された最近のクエリが表示されるので、ユーザーはいつも使っているクエリを簡単に繰り返すことが出来ます。クエリは最大10個まで保存されます。

クエリに関連したセレクションのアクション(セレクションに追加セレクションの絞り込み等)は保存されないことに注意して下さい。

このメニューからクエリが選択されると、その詳細がビルドエリアに表示されます。その後それを直接実行したり、必要に応じて修正することができます。

クエリエディターは既定のクエリをサポートします。標準の保存されたクエリのように、既定のクエリは全ての条件を含めた完全なクエリ定義を含み、いつでもクエリエディターへと読み込むことができます。既定のクエリは配付されたアプリケーションへと埋め込むことも可能で、クエリエディターのサブメニューの一覧に直接表示されます。

既定のクエリを定義するには以下のようにします:

  1. データベースの"Resources"フォルダ内に"Queries"サブフォルダを作成します。
  2. このフォルダ内に既定のクエリとして使用したい、保存されたクエリファイル(.4df)を追加します:

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

サブメニューの項目を選択する事で、対応するクエリがクエリエディターへと読み込まれます。

リマインダ―: サブメニューに表示されるのは、カレントテーブルに関係するクエリファイルのみです。

標準のクエリをエディターで作成するには、"フィールド 演算子 値"のフォームにて行を設定します:

  1. フィールドを指定するには編集エリアの右側にある階層リストを使用します:

    また、編集エリアを右クリックして、フィールドのテーブルの最初の文字を入力することで指定することもできます("[" は入力しないでください)。テキスト予測機構が入力した情報に合致したテーブルを提示します:

    テーブルを選択した後、右矢印キー を押してテーブルを確定させ、フィールドの一覧へ移行します。フィールドの最初の文字を入力するか、上下矢印キー を使用してテーブルのフィールドの一覧をスクロールして下さい:

    リストは、全てのデータベーステーブルとそれらのフィールドを表示します。SET TABLE TITLESSET FIELD TITLES コマンドを使用してヴァーチャルストラクチャーが定義されている場合には、それも表示対象となります。
  2. 中央のメニューから比較演算子を選択します。演算子の一覧は定義されたフィールドの型に応じて更新されます:

    標準の比較演算子に加え、クエリエディターでは拡張された演算子と以前使用した値の型を表示するので、もっともよく使うクエリを簡単に実行することが出来ます(Comparison operatorsを参照して下さい)。
  3. 検索したい値を入力して下さい。
    テキストまたは文字フィールドではワイルドキャラクター(@)を値の最後につけることによって"前方一致"検索を行うことが出来ます。
    選択したフィールドが選択リストと関連付けられている場合、4Dはリストを表示し、そこから値を選択することが出来ます。選択したフィールドがブール型フィールドであった場合、4Dは一対のラジオボタンを表示します。
  4. 複数のクエリを指定したい場合、ボタンをクリックして行を追加して下さい。4Dはボタンに応じて行の中身を複製します。フォーミュラを使用したクエリ行を追加したい場合には、Alt (Windows) または Option (OS X) を押しながらボタンをクリックして下さい。この点については フォーミュラによるクエリ セクションに詳細な説明があります。
  5. 指定したい接続詞(And, Or, 除外)を選択して下さい。
    デフォルトでは4Dは追加された行の隣にAnd接続詞を設定します。
  6. 1から3までの手順を繰り返して新しい条件を指定します。
    複合クエリを作成した場合、4Dはクエリエディター内に表示されている順(上から下)に各行のクエリを実行していきます。接続詞には優先順位はありません。つまり、AndがOrより優先される、といったようなことはないという事です。そのため2行以上にわたるクエリを使用した場合は、条件の入力する順番によってクエリの検索結果が変化する可能性があります。
    複合クエリを作成している途中、行やフィールドや演算子をクリックしたり、新しい値を入力したりすることにより既存のクエリ部分を修正することもできます。
    行のとなりにある ボタンをクリックすることにより、クエリの行を削除することもできます。行の削除は取り消しができないので十分注意して下さい。
  7. セレクションアクションメニューからクエリの結果の使用方法を以下から選択して下さい。セレクションの作成セレクションの絞り込みセレクションに追加セレクションから除外(前のセクションを参照して下さい)。
  8. クエリをディスクに保存するためには、編集メニューから保存...を選択して下さい。
  9. クエリをクリックして検索を実行して下さい。

クエリを作成する際、指定した値とデータベースの内容とを比較する方法を4D に対して指示しなければなりません。例えば名字が“佐藤”と等しいというクエリの場合は、等しいという比較演算子を使用します。これは4Dに対して、名字 フィールドの値と文字列である“佐藤”とを比較するように指示します。

英数字タイプの値に関する比較では、大文字小文字が区別されません。名字が“Smith”である人を検索すると、“smith”や“SMITH”、“sMith”などを含むレコードが検出されます。

含むおよび含まない比較演算子を用いたクエリは、常にシーケンシャル検索になります。キーワード 演算子は文字型とテキスト型のフィールドに対してのみ使用可能です。この型のクエリについての詳細は4D Language Reference マニュアルの比較演算子を参照して下さい。

それぞれの型において使用できる演算子は以下の通りです:

演算子文字/テキスト日付時間ブール数値ピクチャ詳細
空の文字列/= 空xxフィールドにはデータがありません。
≠空の文字列/≠空xxフィールドにデータはあります。
と等しいx数値用の標準の演算子です。
>=x
>x
<=x
<x
x
偽(false)であるxブール用の標準の演算子です。
真(true)であるx
=xxxフィールドは入力された値と完全に一致します。
xxxフィールドは入力された値と異なります。
>=xxxフィールドの値は、入力された値と一致するかまたは大きいです(*)
>xxxフィールドの値は入力された値を超えます(*)
<=xxxフィールドの値は、入力された値と一致するかまたは小さいです(*)
<xxxフィールドの値は入力された値未満です(*)
範囲指定 (以上以下)x最初の日付は二番目以前の日付である必要があります。入力された日付も含め、間にある日付のフィールドを検索します
範囲指定x最初の日付は二番目以前の日付である必要があります。入力された日付は含めずに検索します
= 今日xカレントの日付が表示されている
= 昨日x一日前の日付が表示されている
= 今週(月・四半期・年)中xとり得る値 :- 週(日-土) -週(月-日) -週(月-金) -月 -四半期 -年 これらの値は、カレントの日付を基準として算出されます。
= 昨週(月・四半期・年)中x
= 翌週(月・四半期・年)中x
= 時間(分・秒)以内の過去xとり得る値 : -時間 -分 -秒 これらの値は、カレントの時刻を基準に算出されます。
= 時間(分・秒)以内の未来x
範囲指定(以上以下)xxxフィールドの値は入力された値の間です(入力された値も含みます)。(*)
範囲指定xxxフィールドの値は入力された値の間です(入力された値は含まれません)。(*)
=xとり得る値 : -時間 -分 -秒
x
>=x
>x
<=x
<x
前方一致xテキスト用の標準の演算子です。
後方一致x
含むx
含まないx
キーワードxx入力されたキーワードを検索します。「すべて」(を含むフィールドを検索する)と「どれか」(を含むフィールドを検索する)のどちらかを指定することが出来ます。
キーワード(含まない)xx
<=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は低い販売高売上に対して高い歩合を得ている、東京または大阪の販売員をすべて検索します。比較演算子と論理演算子を使用するこの他の例題は、各検索メソッドにおいて紹介されています。



参照 

フォーミュラによるクエリ

 
プロパティ 

プロダクト: 4D
テーマ: レコードの検索

 
履歴 

変更: 4D v15

 
ARTICLE USAGE

デザインリファレンス ( 4D v16)
デザインリファレンス ( 4D v16.1)
デザインリファレンス ( 4D v16.3)