Använda variabler i SQL-frågor

Du kan använda variabelobjekt och strängvärden i en SQL-fråga. Om du vill använda variabler i en SQL-fråga måste frågan skrivas som en formel som börjar med lika med-tecknet (=) och innehålla strängar som sammanlänkas med ett och-tecken (&).

Du kan använda variabler istället för ett tabellnamn eller kombinera dem genom en WHERE-sats istället för filtervärden.

Använda en variabel för tabellnamnet

Istället för att ange ett explicit tabellnamn kan du skapa en variabel som lagrar ett tabellnamn och kör en SELECT-sats på variabeln:

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

Det motsvarar följande:

SELECT * FROM [TableName]
	 

Använda en variabel för ett filtervärde

Du kan skapa en variabel som lagrar ett produktnamn:

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

Det motsvarar följande SELECT-uttryck från produkttabellen:

SELECT * FROM Products WHERE ProductName= ’Widget’
	 

När en variabel returnerar ett strängvärde måste den inneslutas med enkla citationstecken (’). När en variabel returnerar ett numeriskt värde är detta inte nödvändigt. Exempel:

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

Databasspecifik syntax

Olika databasproviders implementerar SQL på olika sätt. Relationslistor definieras av SQL-satser. En rapportdesigner kan därför behöva skriva flera versioner av samma instruktion i syfte att säkerställa att listdefinitionen fungerar med olika typer av datalänkningar.

Vilken syntax som behövs om du använder variabler i SQL-frågor beror på vilken typ av databas som frågan skrivs för. Exempelvis är denna sats skriven i standard-SQL:

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

För en Oracle-databas skulle satsen lyda som följer:

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

För en DB2-databas skulle satsen lyda som följer:

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