DBEXECUTE

Nota

Em ambientes de nuvem, há suporte para DBEXECUTE apenas em aplicativos comerciais do Infor. Não é possível usar DBEXECUTE em aplicativos personalizados ou estendidos. Em vez disso, use DBEXECUTEFIXED.

É possível ler valores em um banco de dados relacional, atualizar valores existentes e inserir novos valores. DBEXECUTE trabalha diretamente com o banco de dados, e não por meio de uma lista. Por isso, diferentemente da função RWDB, você pode inserir linhas no banco de dados. Os parâmetros da fórmula DBEXECUTE são instruções SQL.

A função DBEXECUTE permite quatro combinações principais, com as quais você pode gravar 0, Nulo ou uma string vazia no banco de dados:

  • DEL: Grava 0
  • CTRL+DEL: Grava Nulo
  • BACKSPACE: Grava uma string vazia ("")
  • CTRL+BACKSPACE: Grava uma string vazia ("")

Sintaxe

A fórmula DBEXECUTE tem estes parâmetros.

  1. Nome do banco de dados: 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. Quando um novo valor é inserido, o valor existente é atualizado. Se não houver valor, a instrução INSERT será usada. Para fazer write-back no banco de dados, a consulta deve fazer referência à chave primária. O SQL SELECT pode retornar diversos valores de uma linha, mas DBEXECUTE 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.
  3. Inserir instrução: especifica como novos dados são inseridos no banco de dados. É um comando SQL padrão INSERT. Você também pode usar o ? caractere na instrução INSERT. Esse caractere representa o último valor inserido por DBEXECUTE na célula atual.

Exemplo

Neste exemplo, productid é a chave primária.

=DBEXECUTE("data_connection", "SELECT productid,FROM products WHERE
		productid=123","INSERT INTO products VALUES(’123’,?)")

A instrução para selecionar é executada toda vez que a função DBEXECUTE é processada. Por exemplo, se ela é exibida em um relatório, usada como um parâmetro em qualquer outra fórmula, usada em uma ação etc. No entanto, a instrução INSERT só é executada quando o valor é inserido em uma célula e o valor não existe no banco de dados. Esse recurso poderá ser utilizado se você usar uma ação para executar DBEXECUTE e quiser inserir dados no banco de dados ou executar qualquer outro comando SQL.

Exemplo

Neste exemplo, productid é a chave primária. A ID do produto referenciada é mantida em uma variável de relatório denominada rv_item.

=DBEXECUTE("data_connection", "SELECT productid, FROM products WHERE
		productid="&Reportvariables.rv_prod.text,"INSERT INTO products VALUES(’123’,?)")

DBEXECUTE em Ações

Para executar uma instrução INSERT (ou qualquer outro comando SQL) em uma fórmula DBEXECUTE executada por uma ação, use a instrução insert em vez da instrução select.

Exemplo

=DBEXECUTE("data_connection", "INSERT INTO products VALUES (’123’,’[a
		value]’)","")