DBEXECUTE
Dans les environnements Cloud, la formule DBEXECUTE n'est prise en charge que dans les applications commerciales Infor. Il n'est pas possible d'utiliser la formule DBEXECUTE dans des applications personnalisées ou étendues. Utiliser DBEXECUTEFIXED à la place.
Cette fonction permet de lire des données d'une base de données relationnelle, de mettre à jour des valeurs existantes et d'en insérer de nouvelles. DBEXECUTE fonctionne directement avec la base de données, et non par l'intermédiaire d'une liste. Ainsi, contrairement à la fonction RWDB, il est possible d'insérer des lignes dans la base de données. Les paramètres de la formule DBEXECUTE sont des instructions SQL.
La fonction DBEXECUTE prend en charge quatre combinaisons de touches, grâce auxquelles vous pouvez écrire 0, une valeur null ou une chaîne vide dans la base de données :
- SUPPR : écrit 0
- CTRL+SUPPR : écrit Null
- RETOUR ARRIÈRE : écrit une chaîne vide ("")
- CTRL+RETOUR ARRIÈRE : écrit une chaîne vide ("")
Syntaxe
La formule DBEXECUTE utilise ces paramètres.
- Nom de la base de données : spécifie la connexion de données relationnelles définie dans EPM Administration.
- Instruction Select : utilisée pour extraire des données de la base de données. Il s'agit d'une commande SQL SELECT standard. Lorsqu'une nouvelle valeur est entrée, la valeur existante est mise à jour. S'il n'y a pas de valeur existante, l'instruction INSERT est utilisée. Pour écrire en différé dans la base de données, la requête doit faire référence à la clé primaire. La commande SQL SELECT peut renvoyer plusieurs valeurs d'une ligne, mais DBEXECUTE ignore toutes les valeurs sauf la première. Ainsi, pour renvoyer et écrire en différé une valeur qui n'est pas la clé primaire, il faut s'assurer que la clé primaire n'est pas la première valeur demandée par l'instruction.
- Instruction Insert : spécifie comment les nouvelles données sont entrées dans la base de données. Il s'agit d'une commande SQL INSERT standard. Il est possible d'utiliser le caractère
?
dans l'instruction INSERT. Il représente la valeur qui a été saisie en dernier par DBEXECUTE dans la cellule en cours.
Exemple
Dans cet exemple, productid
est la clé primaire.
=DBEXECUTE("data_connection", "SELECT productid,FROM products WHERE
productid=123","INSERT INTO products VALUES(’123’,?)")
L'instruction Select est exécutée chaque fois que la fonction DBEXECUTE est traitée. Par exemple, si elle est affichée dans un rapport, utilisée comme paramètre dans une autre formule, utilisée dans une action etc. Mais l'instruction INSERT est exécutée uniquement lorsqu'une valeur est saisie dans une cellule et que cette valeur n'existe pas dans la base de données. L'utilisateur peut avoir recours à cette fonctionnalité s'il exécute DBEXECUTE à l'aide d'une action et s'il souhaite insérer des données dans la base de données (ou exécuter une autre commande SQL).
Exemple
Dans cet exemple, productid
est la clé primaire. L'ID produit référencé est stocké dans une variable de rapport nommée rv_prod.
=DBEXECUTE("data_connection", "SELECT productid, FROM products WHERE
productid="&Reportvariables.rv_prod.text,"INSERT INTO products VALUES(’123’,?)")
Utilisation de DBEXECUTE dans des actions
Pour exécuter l'instruction INSERT (ou toute autre commande SQL) dans une formule DBEXECUTE exécutée par une action, utiliser l'instruction INSERT à la place de l'instruction SELECT.
Exemple
=DBEXECUTE("data_connection", "INSERT INTO products VALUES (’123’,’[a
value]’)","")