SQL クエリでの変数の使用
SQL クエリおよび文字列値で変数オブジェクトを使用できます。SQL クエリで変数を使用するには、クエリを等号 (=) 記号で始まり、アンパサンド (&) で結合される文字列を含む数式として書く必要があります。
テーブル名の代わりに変数を使用したり、変数を WHERE 句と組み合せて、フィルター値の代わりに使用できます。
テーブル名に変数を使用
明示的なテーブル名を指定する代わりに、テーブル名を保持する変数を作成して、変数上で SELECT ステートメントを実行できます。
="SELECT * FROM "&GlobalVariables.TableName.Text
これは次のステートメントと等しくなります。
SELECT * FROM [TableName]
フィルター値に変数を使用
製品名を保持する変数を作成できます。
="SELECT * FROM Products WHERE ProductName =’"&
GlobalVariables.ProductName.Text&"’"
これは、製品テーブルの次の SELECT ステートメントと等価になります。
SELECT * FROM Products WHERE ProductName= ’Widget’
変数が文字列値を返す場合、一重引用符 (’) で囲まなければなりません。変数が数値を返す場合はこれは不要です。例を以下に示します。
="SELECT * FROM Products WHERE ProductID="&
GlobalVariables.ProductID.Text
データベース固有の構文
データベースプロバイダが SQL を実装する方法には違いがあります。リレーショナルリストは SQL ステートメントで定義されます。そのため、レポートデザイナーでは、リストの定義を異なるタイプのデータ接続で使用できるようにするために、同じステートメントの複数のバージョンを記述する必要があります。
SQL クエリで変数を使用する場合、必要な構文は、クエリが書き込まれるデータベースのタイプによって決まります。たとえば、標準 SQL では次のステートメントを書き込みます。
=" SELECT Id, AccCde FROM LdgA where AccCde like '"&GlobalVariables.GV_WhereClause.Text&"' "
Oracle データベースの場合は、次のステートメントを使用します。
=" SELECT ""Id"", ""AccCde"" FROM DES.LDGA where ""AccCde"" like '"&GlobalVariables.GV_WhereClause.Text&"' "
DB2 データベースの場合は、次のステートメントを使用します。
=" SELECT ""Id"", ""AccCde"" FROM ADMIN_DEV.""LdgA"" where ""AccCde"" like '"&GlobalVariables.GV_WhereClause.Text&"' "