Variabelen gebruiken in SQL-query's

In een SQL-query kunt u zowel variabele objecten als reekswaarden gebruiken. Om variabelen in een SQL-query te kunnen gebruiken, moet de query als een formule worden geschreven. Dat wil zeggen dat de query met het is-gelijkteken (=) moet beginnen en reeksen moet bevatten die met het en-teken (&) aaneen worden geschakeld.

U kunt variabelen gebruiken in plaats van tabelnamen of variabelen en tabelnamen combineren met een WHERE-clausule in plaats van filterwaarden.

Een variabele gebruiken voor de tabelnaam

In plaats van een expliciete tabelnaam op te geven, kunt u een variabele maken voor een tabelnaam en een SELECT-instructie op de variabele uitvoeren:

="SELECT * FROM "&GlobalVariables.TableName.Text
	 

Deze instructie is gelijk aan:

SELECT * FROM [TableName]
	 

Een variabele gebruiken voor een filterwaarde

U kunt bijvoorbeeld een variabele aanmaken voor een productnaam:

="SELECT * FROM Products WHERE ProductName =’"&
		GlobalVariables.ProductName.Text&"’"
	 

Dit is gelijk aan de volgende SELECT-instructie voor de tabel Producten:

SELECT * FROM Products WHERE ProductName= ’Widget’
	 

Als een variabele een reekswaarde retourneert, moet deze tussen enkele aanhalingstekens (’) worden geplaatst. Als de variabele een numerieke waarde retourneert, is dat niet nodig. Bijvoorbeeld:

="SELECT * FROM Products WHERE ProductID="&
		GlobalVariables.ProductID.Text
	 

Databasespecifieke syntaxis

Er zijn verschillen in de manier waarop databaseproviders SQL implementeren. Relationele lijsten worden gedefinieerd door SQL-instructies. Het kan dus voorkomen dat rapportontwerpers verschillende versies van dezelfde instructie moeten schrijven om ervoor te zorgen dat de lijstdefinitie werkt met verschillende typen gegevensverbindingen.

Als u variabelen in SQL-query's gebruikt, hangt de vereiste syntaxis af van het type database waarvoor de query wordt geschreven. De volgende instructie is bijvoorbeeld geschreven in standaard-SQL:

=" SELECT Id, AccCde FROM LdgA where AccCde like '"&GlobalVariables.GV_WhereClause.Text&"' "

Voor een Oracle-database zou de instructie er als volgt uitzien:

=" SELECT ""Id"", ""AccCde"" FROM DES.LDGA where ""AccCde"" like '"&GlobalVariables.GV_WhereClause.Text&"' "

Voor een DB2-database zou de instructie er als volgt uitzien:

=" SELECT ""Id"", ""AccCde"" FROM ADMIN_DEV.""LdgA"" where ""AccCde"" like '"&GlobalVariables.GV_WhereClause.Text&"' "