クエリーの設定
フォームとフィールドにはクエリーが設定できます。
クエリーは、レポートエディタの帳票印刷モードによる帳票印刷時に使います。データの取得先が
Access または ODBC 場合にのみ有効です。
※レポートライブラリでは、クエリーの取得ができますが、データの取得はできません。
※クエリーの設定機能は、可変フォームでは使用できません。
フォームのクエリー
フォームにはクエリーを1つ設定することができます。
クエリーは「フォーム情報メニュー/クエリー」でクエリー画面を開き、直接入力します。
クエリーは、レポートエディタからそのままデータベースに送られます。
利用するデータベースで有効なSQL言語を記述してください。
テキストフィールドのクエリー
テキストフィールドのクエリープロパティには、クエリー、列名、予約語を設定することができます。
文字列が複数のワードで構成されている場合はクエリーとして認識されます。
文字列が1つのワードの場合、そのワードが予約語であれば予約語として認識され、それ以外であれば列名として認識されます。
1..クエリープロパティに列名を設定する
テキストフィールドのクエリープロパティに、フォームのクエリー中に記述した列名を設定すると、フォームクエリー実行後に、抽出した列の値がテキストフィールドに自動でセットされます。
例)
フォームクエリー:select 顧客名, 住所 from 顧客マスタ
テキストフィールドクエリー:顧客名
このように、テキストフィールドのクエリープロパティに、フォームクエリー中に記述した列名の1つである顧客名を設定しておくと、取得した顧客名をテキストフィールドの値とします。
フォームのクエリー中に記述した列名をテキストフィールド名称とリンクさせることもできます。
フォームクエリー:select 顧客名, 住所 from 顧客マスタ
テキストフィールドクエリー:何も設定しない
テキストフィールド名称:顧客名
このようにしても、取得した顧客名の値をテキストフィールドの値とします。
クエリーの設定値がまず評価され、次にフィールド名称が評価されるので、フィールド名称をリンクさせる場合は、クエリープロパティに何も設定しないようにします。
2.クエリープロパティにクエリーを設定する
テキストフィールドのクエリープロパティには、テキストフィールドの値を取得するクエリーを設定することができます。
例)
テキストフィールドクエリー:select 会社名 from 会社マスタ
この例では、会社マスタテーブルから会社名という列の値を取得します。
複数レコードを取得した場合は、先頭レコードを使用します。
フォームにクエリーが設定されている場合は、フォームクエリー中に記述されている列名を条件として記述することもできます。
例)
フォームクエリー:select 顧客コード, 売上高 from 売上テーブル
テキストフィールドクエリー:
select 顧客名 from 顧客マスタ where 顧客コード = %顧客コード%
フォームクエリーで取得した顧客コードの値をテキストフィールドクエリーの条件に置き換えます。例えば取得した顧客コードが10の場合、「select
顧客名 from 顧客マスタ where 顧客コード=10」というクエリーが内部で生成され、実行されます。
条件式を記述する時の注意:
@フォームクエリーの列名に入っていない文字列は、使用できません。
Aクエリー中に条件として記述する列名は、必ず%で囲んでください。
例)顧客コードを条件として記述する場合
select 顧客名 from 顧客マスタ where 顧客コード = %顧客コード%
Bクエリー中に記述されている列が文字型(テキスト型、Char/Varchar型)の場合は、前後をシングルクォーテーションで囲んでください。
例)顧客コードが文字型の場合
select 顧客名 from 顧客マスタ where 顧客コード = %顧客コード%
Cクエリー中に記述されている列が日付型の場合は、使用するデータベースで有効な記号で前後を囲んでください。
例)ACCESSの場合
select 売上高 from 顧客マスタ where 売上日 >= #%売上日%#
例)SQL Serverの場合
select 売上高 from 顧客マスタ where 売上日 >= %売上日%
3.予約語の設定
クエリープロパティには、予約語を設定することができます。
グリッドフィールドのクエリー
グリッドフィールドのクエリープロパティにはクエリーを設定することができます。
クエリー中の列と、グリッドフィールドの列とのリンク
グリッドフィールドには列ごとに個別の列名を設定できますが、このグリッドフィールドの列名をクエリー中の列名と同じものにしておくとリンクさせることができます。
例えば、クエリーで数量と単価を求めた場合、グリッドフィールドの列名を数量と単価にしておくと、取得した値は各々の列に入ります。
グリッドフィールドに同名の列名がない場合は、クエリーに記述された列の順番でグリッドの1列目から順に値を入れます。
例えば、クエリーで数量、単価を求めた場合、1列目に数量、2列目に単価が入ります。
例)
フォームのクエリー :
select 見積番号,顧客コード,日付 from 見積データ
グリッドフィールドクエリー:
select 内容,数量,単価,数量*単価 AS 金額 from
見積明細データ where 見積番号=%見積番号%
グリッドフィールドの列名 : "内容","数量","単価","金額"
フォームにクエリーが設定されている時は、フォームクエリー中の列名を条件として記述することができます。
条件を記述する時の注意:
@フォームクエリーの列名に入っていない文字列は、使用できません。
Aクエリー中に条件として記述する列名は、必ず%で囲んでください。
例)顧客コードを条件として記述する場合
select 顧客名 from 顧客マスタ where 顧客コード = %顧客コード%
Bクエリー中に記述されている列名が文字型(テキスト型、Char/Varchar型)の場合は、前後をシングルクォーテーションで囲んでください。
例)顧客コードが文字型の場合
select 顧客名 from 顧客マスタ where 顧客コード = %顧客コード%
Cクエリー中に記述されている列名が日付型の場合は、使用するデータベースで有効な記号で前後を囲んでください。
例)ACCESSの場合
select 売上高 from 顧客マスタ where 売上日 >= #%売上日%#
例)SQL Serverの場合
select 売上高 from 顧客マスタ where 売上日 >= %売上日%
イメージフィールド・バーコードフィールドのクエリー
イメージフィールド・バーコードフィールドのクエリープロパティには、クエリー、列名を設定することができます。クエリープロパティに設定された文字列が複数のワードを持つ場合はクエリーとして認識されます。1つのワードが設定された場合は列名として認識されます。設定方法は、テキストフィールドと同じですが、予約語は設定できません。