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