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