DBEXECUTE

Nota

DBEXECUTE è supportata solo in ambienti on-premise e nelle applicazioni commerciali Infor in ambienti cloud. Nei report personalizzati nel cloud Infor è supportata solo DBEXECUTEFIXED.

È possibile leggere valori da un database relazionale, aggiornare i valori esistenti e inserire nuovi valori. DBEXECUTE interagisce direttamente con il database, non mediante un elenco. Pertanto, a differenza della funzione RWDB, consente di inserire righe nel database. I parametri della formula DBEXECUTE sono istruzioni SQL.

La funzione DBEXECUTE supporta quattro combinazioni di tasti tramite le quali è possibile scrivere 0, Null o una stringa vuota nel database:

  • CANC: consente di scrivere '0' (zero).
  • CTRL+CANC: consente di scrivere Null.
  • BACKSPACE: consente di scrivere una stringa vuota ("").
  • CTRL+BACKSPACE: consente di scrivere una stringa vuota ("").

Sintassi

La formula DBEXECUTE presenta i seguenti parametri.

  1. Nome database: specifica la connessione dati relazionale definita in d/EPM Administration.
  2. Istruzione SELECT: consente di recuperare dati dal database. Si tratta di un comando SQL SELECT standard. Quando viene immesso un nuovo valore, il valore esistente viene aggiornato. Se non esiste alcun valore, viene utilizzata l'istruzione INSERT. Per eseguire il writeback nel database, la query deve fare riferimento alla chiave primaria. SQL SELECT può restituire più valori da una riga, ma DBEXECUTE li ignora tutti ad eccezione del primo. Per restituire ed eseguire il writeback di un valore che non è la chiave primaria, assicurarsi che la chiave primaria non sia il primo valore richiesto dall'istruzione.
  3. Istruzione INSERT: Consente di specificare la modalità di immissione dei nuovi dati nel database. Si tratta di un comando SQL INSERT standard. È possibile utilizzare il carattere ? nell'istruzione INSERT Consente di rappresentare il valore immesso da DBEXECUTE nella cella corrente.

Esempio

In questo esempio, productid è la chiave primaria.

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

L'istruzione SELECT viene eseguita ogni volta che viene elaborata la funzione DBEXECUTE. Ad esempio, se viene visualizzata in un report, utilizzata come parametro in qualsiasi altra formula, utilizzata in un'azione e così via. L'istruzione INSERT tuttavia viene eseguita solo quando viene immesso un valore in una cella e il valore non esiste nel database. Questa funzione può essere utilizzata se si applica un'azione per eseguire DBEXECUTE e si desidera inserire dati nel database, oppure per eseguire qualsiasi altro comando SQL.

Esempio

In questo esempio, productid è la chiave primaria. L'ID prodotto a cui viene fatto riferimento è contenuto in una variabile di report denominata rv_prod.

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

DBEXECUTE nelle azioni

Per eseguire un'istruzione INSERT (o qualsiasi altro comando SQL) in una formula DBEXECUTE eseguita da un'azione, utilizzare l'istruzione INSERT anziché l’istruzione SELECT.

Esempio

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