Usar variáveis em consultas SQL

É possível usar objetos variáveis em uma consulta SQL, além de valores de string. Para usar variáveis em uma consulta SQL, a consulta deve ser escrita como uma fórmula, começando com o sinal de igual (=) e contendo strings concatenadas pela letra E comercial (&).

Use variáveis em vez de um nome de tabela ou combine-as com a cláusula WHERE para usá-las no lugar de valores de filtro.

Usar uma variável para o nome da tabela

Em vez de especificar explicitamente um nome de tabela, crie uma variável para conter o nome da tabela e execute uma instrução Select na variável:

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

Isso equivale a:

SELECT * FROM [TableName]
	 

Usar uma variável para um valor de filtro

É possível criar uma variável para conter um nome de produto:

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

Isso seria equivalente a esta tabela Select from the Products:

SELECT * FROM Products WHERE ProductName= ’Widget’
	 

Se a variável retornar um valor de string, ela deverá ser colocada entre aspas simples ('). Se a variável retornar um valor numérico, isso não será necessário. Por exemplo:

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

Sintaxe específica de bancos de dados

Existem diferenças na forma como os provedores de banco de dados implementam SQL. As listas relacionais são definidas por instruções SQL. Desse modo, os designers de relatórios podem ter que gravar várias versões da mesma instrução para garantir que a definição de lista funcionará com diferentes tipos de conexões de dados.

Se você usar variáveis em consultas SQL, a sintaxe necessária depende do tipo de banco de dados para o qual a consulta é gravada. Por exemplo, esta instrução é gravada em SQL padrão:

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

Para um banco de dados Oracle, a instrução seria:

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

Para um banco de dados DB2, a instrução seria:

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