DBEXECUTE

NB

DBEXECUTE wordt alleen ondersteund in lokale omgevingen en in commerciële applicaties van Infor in cloudomgevingen. Alleen DBEXECUTEFIXED wordt ondersteund in aangepaste rapporten in Infor Cloud.

U kunt waarden lezen vanuit een relationele database, bestaande waarden bijwerken en nieuwe waarden invoeren. DBEXECUTE werkt direct met de database, niet via een lijst. Dus in tegenstelling tot de RWDB-functie kunt u rijen invoegen in de database. De parameters van de DBEXECUTE-formule zijn SQL-instructies.

De DBEXECUTE-functie ondersteunt vier toetscombinaties waarmee u 0, Null of een lege tekenreeks naar de database kunt schrijven:

  • DEL: Schrijft 0
  • CTRL+DEL: Schrijft Null
  • BACKSPACE: Schrijft een lege tekenreeks ("")
  • CTRL+BACKSPACE: Schrijft een lege tekenreeks ("")

Syntaxis

De DBEXECUTE-formule heeft deze parameters.

  1. Databasenaam: Hiermee wordt de relationele gegevensverbinding opgegeven die is gedefinieerd in d/EPM Administration.
  2. Instructie selecteren: Dit wordt gebruikt om gegevens op te halen uit de database. Het betreft een standaard SQL SELECT-opdracht. Wanneer een nieuwe waarde wordt ingevoerd, wordt de bestaande waarde bijgewerkt. Als er geen bestaande waarde is, wordt de INSERT-instructie gebruikt. Om terug te schrijven naar de database moet de query verwijzen naar de primaire sleutel. De SQL SELECT kan meerdere waarden retourneren uit een rij, maar DBEXECUTE negeert ze allemaal, met uitzondering van de eerste. Als u dus een andere waarde dan de primaire sleutel wilt retourneren en terugschrijven, moet u ervoor zorgen dat de primaire sleutel niet de eerste waarde is die door de instructie wordt aangevraagd.
  3. Instructie invoegen: Hiermee wordt opgegeven hoe nieuwe gegevens worden ingevoerd in de database. Het is een standaard SQL INSERT-opdracht. U kunt het teken ? gebruiken in de INSERT-instructie. Dit vertegenwoordigt de waarde die door DBEXECUTE is ingevoerd in de huidige cel.

Voorbeeld

In dit voorbeeld is productid de primaire sleutel.

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

De SELECT-instructie wordt telkens uitgevoerd wanneer de DBEXECUTE-functie wordt verwerkt. De instructie wordt bijvoorbeeld weergegeven in een rapport, gebruikt als parameter in een andere formule, gebruikt in een actie, enzovoort. Maar de INSERT-instructie wordt alleen uitgevoerd wanneer er een waarde in een cel wordt ingevoerd en de waarde niet in de database aanwezig is. Deze functie kan worden toegepast als u een actie gebruikt om DBEXECUTE uit te voeren en gegevens wilt invoeren in de database, of om een andere SQL-opdracht uit te voeren.

Voorbeeld

In dit voorbeeld is productid de primaire sleutel. De product-ID waarnaar wordt verwezen, staat in een rapportvariabele met de naam rv_prod.

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

DBEXECUTE in Acties

Als u een INSERT-instructie, of een andere SQL-opdracht, wilt uitvoeren in een DBEXECUTE-formule die wordt uitgevoerd door een actie, gebruikt u de INSERT-instructie in plaats van de SELECT-instructie.

Voorbeeld

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