Utilizzo delle variabili nelle query SQL

In una query SQL è possibile utilizzare oggetti variabile così come valori stringa. Per utilizzare le variabili in una query SQL, la query deve essere scritta come formula, deve iniziare con il segno uguale (=) e includere stringhe concatenate con "e" commerciale (&).

È possibile utilizzare le variabili in sostituzione di un nome di tabella o combinarle con la clausola WHERE in sostituzione di valori filtro.

Utilizzo di una variabile per il nome di tabella

Invece di specificare un nome di tabella esplicito, è possibile creare una variabile per contenere un nome di tabella ed eseguire un'istruzione di selezione sulla variabile:

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

Ciò equivale all'istruzione:

SELECT * FROM [TableName]
	 

Utilizzo di una variabile per un valore filtro

È possibile creare una variabile in cui includere un nome di prodotto:

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

Equivale alla seguente istruzione Select per la tabella Products:

SELECT * FROM Products WHERE ProductName= ’Widget’
	 

Quando una variabile restituisce un valore stringa, deve essere racchiusa tra virgolette singole ('). Questo non è necessario invece se la variabile restituisce un valore numerico, Ad esempio:

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

Sintassi specifica del database

I provider di database implementano il linguaggio SQL in modi diversi. Gli elenchi relazionali vengono definiti con istruzioni SQL. È possibile pertanto che i designer di report debbano scrivere versioni differenti della stessa istruzione per garantire il funzionamento della definizione di elenco con i diversi tipi di connessione dati.

Se si utilizzano le variabili nelle query SQL, la sintassi necessaria dipenderà dal tipo di database per cui viene scritta la query. La seguente istruzione, ad esempio, è scritta nel linguaggio SQL standard:

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

Per un database Oracle, invece, l'istruzione verrebbe scritta nel seguente modo:

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

Infine, per un database DB2, l'istruzione sarebbe simile alla seguente:

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