DBEXECUTE

Obs!

I molnmiljöer stöds endast DBEXECUTE i kommersiella Infor-program. Du kan inte använda DBEXECUTE i anpassade eller utökade program. Använd DBEXECUTEFIXED istället.

Du kan läsa värden från en relationsdatabas, uppdatera befintliga värden och infoga nya värden. DBEXECUTE arbetar direkt mot databasen, inte via en lista. Till skillnad från funktionen RWDB kan du infoga rader i databasen. Parametrarna i DBEXECUTE-formeln är SQL-satser.

Funktionen DBEXECUTE stöder fyra nyckelkombinationer med vilka du kan skriva 0, null eller en tom sträng till databasen:

  • Del: Skriver 0
  • Ctrl+Del: Skriver null
  • Backsteg: Skriver en tom sträng ("")
  • Ctrl+backsteg: Skriver en tom sträng ("")

Syntax

DBEXECUTE-formeln har dessa parametrar.

  1. Databasens namn: Anger den relationsdatalänkning som definieras i d/EPM Administration.
  2. Select-sats: Används för att hämta data från databasen. Det är ett SELECT-kommando i standard-SQL. När ett nytt värde anges uppdateras det befintliga värdet. Om det inte finns något befintligt värde används satsen INSERT. Om du vill återskriva till databasen måste frågan referera till den primära nyckeln. SQL SELECT kan returnera flera värden från en rad men DBEXECUTE ignorerar alla utom det första. Om du vill returnera och återskriva ett värde som inte är den primära nyckeln måste du kontrollera att den primära nyckeln inte är det första värdet som krävs av satsen.
  3. INSERT-sats: Specificerar hur nya data ska anges i databasen. Det är ett INSERT-kommando i standard-SQL. Du kan använda tecknet ? i INSERT-satsen. Det representerar det värde som senast angavs av DBEXECUTE i den aktuella cellen.

Exempel

I det här exemplet är productid den primära nyckeln.

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

Select-satsen körs varje gång DBEXECUTE-funktionen bearbetas. Om den till exempel visas i en rapport, används som en parameter i någon annan formel, används i en åtgärd osv. INSERT-satsen exekveras däremot endast när ett värde anges i en cell och värdet inte finns i databasen. Denna funktion kan användas om du kör DBEXECUTE genom en åtgärd och vill infoga data i databasen eller köra ett annat SQL-kommando.

Exempel

I det här exemplet är productid den primära nyckeln. Det produkt-ID som refereras till finns i en rapportvariabel med namnet rv_prod.

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

DBEXECUTE i Åtgärder

Om du vill köra en INSERT-sats (eller ett annat SQL-kommando) i en DBEXECUTE-formel som körs av en åtgärd använder du INSERT-satsen istället för SELECT-satsen.

Exempel

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