Bruke variabler i SQL-forespørsler

Du kan bruke variable objekter i en SQL-spørring samt strengverdier. For å bruke variabler i en SQL-spørring må spørringen først skrives som en formel som starter med likhetstegnet (=) og inneholder strenger som er sammenknyttet med et-symbolet (&).

Du kan bruke variabler i stedet for et tabellnavn eller kombinere de med WHERE-kommandoen, i stedet for filterverdier.

Bruke en variabel for tabellnavnet

I stedet for å spesifisere ett tabellnavn kan du opprette en variabel som inneholder tabellnavnet og kjøre et valgt uttrykk for variabelen:

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

Dette er likestilt:

SELECT * FROM [TableName]
	 

Bruke en variabel for en filterverdi

Du kan opprette en variabel for å inneholde et produktnavn:

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

Dette ville være likestilt med dette valget i produkttabellen:

SELECT * FROM Products WHERE ProductName= ’Widget’
	 

Der en variabel returnerer en strengverdi må den være omsluttet av enkle hermetegn (’). Der en variabel returnerer en numerisk verdi er dette ikke nødvendig. For eksempel:

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

Databasespesifikk syntaks

Det fins forskjeller i måten som databaseleverandører implementerer SQL på. Relasjonslister defineres av SQL-uttrykk. Med andre ord må rapportutformere kanskje skrive flere versjoner av det samme uttrykket for å sikre at listedefinisjonen fungerer med forskjellige typer databasetilkoblinger.

Hvis du bruker variabler i SQL-forespørsler, er den nødvendige syntaksen avhengig av databasetypen som spørringen skrives for. For eksempel er dette uttrykket skrevet i standard SQL:

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

For en Oracle-database ville uttrykket være:

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

For en DB2-database ville uttrykket være:

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