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&"' "