DBEXECUTEFIXED

DBEXECUTEFIXED est une alternative à DBEXECUTE qui prend en charge des paramètres. Contrairement à DBEXECUTE, elle peut être utilisée dans des environnements Cloud et sur site, et dans des applications personnalisées ou étendues.

L'instruction SQL est traitée comme un texte fixe et, par conséquent, ne peut pas faire directement référence aux variables.

Si l'instruction se trouve dans une cellule non protégée, il est possible de mettre à jour la valeur qu'elle renvoie mais, contrairement à DBEXECUTE, il est impossible d'ajouter de nouvelles lignes.

Remarque

Les noms des paramètres sont sensibles à la casse.

Syntaxe

La formule DBEXECUTEFIXED contient ces paramètres.

  1. Alias : spécifie la connexion de données relationnelles définie dans EPM Administration.
  2. Instruction Select : utilisée pour extraire des données de la base de données. Il s'agit d'une commande SQL SELECT standard. Pour activer la base de données à mettre à jour, la requête doit inclure la clé primaire. La commande SQL SELECT peut renvoyer plusieurs valeurs à partir d'une ligne, mais DBEXECUTEFIXED 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. Pour l'écriture en différé, la cellule contenant la requête doit être non protégée.
  3. Valeurs de paramètres : Il est possible d'utiliser des paramètres à valeur unique et à valeurs multiples. Dans les instructions SQL, faire référence aux paramètres à valeur unique avec @[parameter_name]. Faire référence aux paramètres à valeurs multiples avec @@[nom_paramètre]. Les valeurs dans les paramètres à valeurs multiples doivent être séparées par le caractère de trait (|).
=DBEXECUTEFIXED("alias", "select_statement", {, "parameter"})

Les noms des paramètres sont automatiquement affectés en tant que p1, p2, etc.

Exemple

Dans cet exemple, la formule renvoie le nom d'élément où l'ID a la valeur actuellement stockée dans la variable de rapport rv_configs. items.ID est la clé primaire.

=DBEXECUTEFIXED("configdb", "SELECT items.name,items.ID FROM items WHERE Id=@p1",ReportVariables.rv_configs.Text)

items.id est la clé primaire. Si la formule est dans une cellule non protégée et renvoie une valeur, il est possible de mettre à jour la valeur : dans cet exemple, le nom de l'élément.

Remarque

L'intégralité de la déclaration SQL étant traitée comme du texte, il n'est pas nécessaire de concaténer les valeurs de chaîne avec le caractère &, comme c'est le cas dans ces formules DBEXECUTE :

=DBEXECUTE("configdb", "SELECT items.name,items.ID FROM items WHERE Id="&ReportVariables.rv_configs.Text)
=DBEXECUTE("configdb", "SELECT items.ID,items.name FROM items WHERE name='"&ReportVariables.rv_name.Text&"'")

La syntaxe de la concaténation diffère car, dans le premier exemple, la valeur référencée est numérique et dans le second, il s'agit de texte.