DBEXECUTEFIXED

DBEXECUTEFIXED é uma alternativa a DBEXECUTE com suporte para parâmetros. Ao contrário de DBEXECUTE, é possível usá-lo em ambientes de nuvem e locais, além de aplicativos personalizados ou estendidos.

A instrução SQL é tratada como texto fixo, portanto, não pode fazer referência direta a variáveis.

Se a instrução estiver em uma célula desprotegida, você poderá atualizar o valor que ela retorna, porém, ao contrário do que ocorre com DBEXECUTE, não poderá adicionar linhas.

Nota

Nomes de parâmetro diferenciam maiúsculas de minúsculas.

Sintaxe

A fórmula DBEXECUTEFIXED tem estes parâmetros.

  1. Alias: especifica a conexão de dados relacional definida em d/EPM Administration.
  2. Selecionar instrução: usado para recuperar dados do banco de dados. É um comando SELECT SQL padrão. Para habilitar o banco de dados a ser atualizado, a consulta deve incluir a chave primária. A SQL SELECT pode retornar diversos valores de uma linha, mas DBEXECUTEFIXED ignora todos, exceto o primeiro. Por isso, para retornar e fazer write-back de um valor que não é a chave primária, verifique se a chave primária não é o primeiro valor solicitado pela instrução. Para write-back, a célula que contém a consulta deve estar protegida.
  3. Valores do parâmetro: É possível usar parâmetros de valor simples e de valores múltiplos. Em instruções SQL, consulte parâmetros de valor único com @[parameter_name]. Faça referência a parâmetros de valores múltiplos com @@[nome_do_processo]. Os valores em parâmetros de valores múltiplos devem ser separados pelo caractere pipe (|).
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})

Os nomes de parâmetros são automaticamente atribuídos como p1, p2 etc.

Exemplo

Neste exemplo, a fórmula retorna o nome do item em que o ID tem o valor atualmente mantido na variável de relatório rv_configs. items.ID é a chave primária.

=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)

items.id é a chave primária. Se a fórmula estiver em uma célula desprotegida e retornar um valor, será possível atualizar o valor: neste exemplo, o nome do item.

Nota

Como toda a instrução SQL é tratada como texto, não há nenhum requisito para concatenar os valores de string com o caractere & como é necessário nas seguintes fórmulas DBEXECUTE:

=DBEXECUTE("configdb", "SELECT items.name,items.ID FROM items WHERE Id="&ReportVariables.rv_configs.Text)
=DBEXECUTE("configdb", "SELECT items.ID,items.name FROM items WHERE name='"&ReportVariables.rv_name.Text&"'")

A sintaxe da concatenação difere porque, no primeiro exemplo, o valor referenciado é numérico e o segundo é de texto.