クエリーの設定

フォームとフィールドにはクエリーが設定できます。
クエリーは、レポートエディタの帳票印刷モードによる帳票印刷時に使います。データの取得先が Access または ODBC 場合にのみ有効です。
 
※レポートライブラリでは、クエリーの取得ができますが、データの取得はできません。
※クエリーの設定機能は、可変フォームでは使用できません。

フォームのクエリー

フォームにはクエリーを1つ設定することができます。
クエリーは「フォーム情報メニュー/クエリー」でクエリー画面を開き、直接入力します。
 
00000108.gif
 
クエリーは、レポートエディタからそのままデータベースに送られます。
利用するデータベースで有効なSQL言語を記述してください。

テキストフィールドのクエリー

テキストフィールドのクエリープロパティには、クエリー、列名、予約語を設定することができます。
文字列が複数のワードで構成されている場合はクエリーとして認識されます。
文字列が1つのワードの場合、そのワードが予約語であれば予約語として認識され、それ以外であれば列名として認識されます。
 
00000109.gif
 
1..クエリープロパティに列名を設定する
テキストフィールドのクエリープロパティに、フォームのクエリー中に記述した列名を設定すると、フォームクエリー実行後に、抽出した列の値がテキストフィールドに自動でセットされます。
 
例)
フォームクエリー:select 顧客名, 住所 from 顧客マスタ
テキストフィールドクエリー:顧客名
 
00000110.gif
 
このように、テキストフィールドのクエリープロパティに、フォームクエリー中に記述した列名の1つである顧客名を設定しておくと、取得した顧客名をテキストフィールドの値とします。
フォームのクエリー中に記述した列名をテキストフィールド名称とリンクさせることもできます。
フォームクエリー:select 顧客名, 住所 from 顧客マスタ
テキストフィールドクエリー:何も設定しない
テキストフィールド名称:顧客名
このようにしても、取得した顧客名の値をテキストフィールドの値とします。
クエリーの設定値がまず評価され、次にフィールド名称が評価されるので、フィールド名称をリンクさせる場合は、クエリープロパティに何も設定しないようにします。
 
.クエリープロパティにクエリーを設定する
テキストフィールドのクエリープロパティには、テキストフィールドの値を取得するクエリーを設定することができます。
 
例)
テキストフィールドクエリー:select 会社名 from 会社マスタ
この例では、会社マスタテーブルから会社名という列の値を取得します。
複数レコードを取得した場合は、先頭レコードを使用します。
フォームにクエリーが設定されている場合は、フォームクエリー中に記述されている列名を条件として記述することもできます。
 
例)
フォームクエリー:select 顧客コード, 売上高 from 売上テーブル
テキストフィールドクエリー:
select 顧客名 from 顧客マスタ where 顧客コード = %顧客コード%
 
00000111.gif
 
フォームクエリーで取得した顧客コードの値をテキストフィールドクエリーの条件に置き換えます。例えば取得した顧客コードが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 見積番号=%見積番号%
グリッドフィールドの列名 : "内容","数量","単価","金額"
 
00000112.gif
フォームにクエリーが設定されている時は、フォームクエリー中の列名を条件として記述することができます。
 
条件を記述する時の注意:
 
@フォームクエリーの列名に入っていない文字列は、使用できません。
 
Aクエリー中に条件として記述する列名は、必ず%で囲んでください。
例)顧客コードを条件として記述する場合
select 顧客名 from 顧客マスタ where 顧客コード = %顧客コード%
 
Bクエリー中に記述されている列名が文字型(テキスト型、Char/Varchar型)の場合は、前後をシングルクォーテーションで囲んでください。
例)顧客コードが文字型の場合
select 顧客名 from 顧客マスタ where 顧客コード = ‘%顧客コード%’
 
Cクエリー中に記述されている列名が日付型の場合は、使用するデータベースで有効な記号で前後を囲んでください。
例)ACCESSの場合
select 売上高 from 顧客マスタ where 売上日 >= #%売上日%#
例)SQL Serverの場合
select 売上高 from 顧客マスタ where 売上日 >= ‘%売上日%’

イメージフィールド・バーコードフィールドのクエリー

イメージフィールド・バーコードフィールドのクエリープロパティには、クエリー、列名を設定することができます。クエリープロパティに設定された文字列が複数のワードを持つ場合はクエリーとして認識されます。1つのワードが設定された場合は列名として認識されます。設定方法は、テキストフィールドと同じですが、予約語は設定できません。