DBEXECUTE
DBEXECUTE só tem suporte em ambientes locais e em aplicativos comerciais do Infor em ambientes de nuvem. Há suporte apenas para DBEXECUTEED em relatórios personalizados na nuvem do Infor.
É 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.
- Nome do banco de dados: especifica a conexão de dados relacional definida em d/EPM Administration.
- 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.
- 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]’)","")