Exécuter une requête SQL

Cette action envoie des commandes SQL sur votre serveur SQL et collecte les résultats. Utiliser les commandes SELECT, INSERT, UPDATE et DELETE.

L'action Exécuter une requête SQL a deux objectifs :

  • Récupérer des données additionnelles dans la base de données : Vous souhaitez imprimer des étiquettes avec des données provenant de votre base de données, mais toutes les valeurs ne sont pas requises. Par exemple, seules les valeurs Product ID et Description, mais pas pour Prix. Créer une requête SQL pour rechercher les valeurs Prix dans la base de données SQL.

    SELECT Price FROM Products (sélectionner Prix de Produits)
    WHERE ID = :[Product ID]

    L ID est un champ de la base de données, Product ID est une variable définie dans le déclencheur.

  • Mettre à jour ou effacer des données de la base de données : Une fois que vos étiquettes sont imprimées, mettre à jour les enregistrements dans la base de données et signaler au système que les enregistrements particuliers ont déjà été traités. Exemple de code SQL: Changer le champ AlreadyPrinted en True pour l'enregistrement en cours de traitement.

    UPDATE Products (mise à jour produits)
    SET AlreadyPrinted = True
    WHERE ID = :[Product ID]

    Ou effacer l'enregistrement actuel de la base de données, car il n'est plus nécessaire.

    DELETE FROM Products (effacer de Produits)
    WHERE ID = :[Product ID]

    L ID est un champ de la base de données, Product ID est une variable définie dans le déclencheur.

Note

Pour utiliser les valeurs de variables dans des requêtes SQL, il faut placer le signe deux points (:) devant les noms des variables. Cela signale que le nom de la variable suit.

Important !

Lorsque vous créez votre solution avec une connexion de base de données, utilisez les variables d’invite sur vos étiquettes au lieu de champs de base de données.

Utilisez les mêmes noms pour les variables d’invite que ceux définis pour les champs de base de données, par exemple :

Champ de base de données : food_products_1c.ProdCode

Variable d’invite sur votre étiquette : ProdCode

Loftware associe ensuite automatiquement les variables correspondantes aux champs de base de données.

À propos : Ce groupe identifie l'action sélectionnée.

  • Nom : permet de définir un nom pour l'action. Cela permet de reconnaître plus facilement l'action dans la liste des actions de la solution. Par défaut, le nom de l'action provient de son type.
  • Description : Informations personnelles sur l'action. Mettre une description qui explique l'objectif et le rôle de l'action dans la solution.
  • Type d'action : Information en lecture seule sur le type d'action sélectionné.

Le groupe Connexion à la base de données définit la connexion à la base de données qui sera utilisée pour l'instruction.

Conseil

Avant d'envoyer une requête SQL à une base de données, il faut paramétrer la connexion à la base de données. Cliquer sur le bouton Définir et suivre les instructions à l'écran. Pour se connecter à une source de données contrôlée par des requêtes SQL, il ne faut pas utiliser de fichiers texte (CSV) et Excel.

Le groupe Instruction SQL définit une instruction ou une requête SQL à exécuter.

Conseil

Les instructions en Langage de Manipulation des données (DML) peuvent exécuter des requêtes dans des tables de bases de données existantes.

Utiliser les instructions SQL standard, comme SELECT, INSERT, DELETE et UPDATE, y compris les jointures, fonctions et mots clés. Les instructions en langage DDL pour créer des bases de données et des tables (CREATE DATABASE, CREATE TABLE), ou les supprimer (DROP TABLE) ne sont pas permises.

  • Test : Ouvre la section Prévisualisation des données. Simuler l'exécution (sélectionné par défaut) teste l'exécution des instructions SQL. Cliquer sur Exécuter pour lancer la simulation.

    Conseil

    Aperçu des données Cette section permet de tester l'exécution des requêtes SQL avec des données réelles. Pour protéger les données d'une mise à jour accidentelle, vérifier que l'option Simuler l'exécution est activée. Les instructions INSERT, DELETE et UPDATE s'exécuteront. Cela montrera en retour le nombre de données affectées, la transaction sera ensuite annulée.

    Si la requête SQL utilise des variables, leurs valeurs peuvent être saisies pour l'exécution du test.

  • Insérer une source de données : permet d'insérer une variable, nouvelle ou existante, dans une requête SQL.

  • Exporter/Importer : Permet d'exporter ou importer une instruction SQL de ou dans un fichier externe.

  • Mode d'exécution : spécifie le mode explicite d'exécution de la requête SQL.

    Conseil

    Avec certaines requêtes SQL complexes, il devient très difficile de déterminer automatiquement quelle est l'action prévue. Si la logique intégrée a des problèmes pour identifier vos intentions, sélectionner l'action principale manuellement.

    • Automatique : Détermine l'action automatiquement.

    • Retourner un ensemble d'enregistrements (SELECT) reçoit les données récupérées dans les enregistrements.

    • Ne renvoie pas l'ensemble d'enregistrements (INSERT, DELELE, UPDATE) : Utiliser cette option si la requête ne renvoie pas les enregistrements. Ou insérer de nouveaux enregistrements, supprimer ou mettre à jour les enregistrements existants. Le résultat est une réponse sur le nombre de lignes affectées par votre requête.

  • Délai d'exécution : vous permet de définir le délai pour d'envoi de vos commandes au serveur SQL. Utiliser le délai d'exécution dans le cas d'un envoi de commandes SQL multiples et consécutives nécessitant un temps de traitement plus long.

    Saisir la durée du délai requis en secondes. Par défaut, la durée du délai d'exécution est de 60 s. Si vous voulez que votre fournisseur de base de données définisse le délai, saisir 0 s.

Le groupe Résultat permet de déterminer comment stocker le résultat de la requête SQL et de définir la répétition de l'action.

  • Enregistrer le résultat dans la variable : définit la variable dans laquelle sera enregistré le résultat de l'instruction SQL. Cette option dépend du Mode d'exécution sélectionné.

    • Résultat de la requête SELECT. L'exécution de la requête SELECT renvoie un jeu d'enregistrements. Le contenu du texte reçu sera au format CSV. La première ligne contient les noms de champs de résultats. Les lignes suivantes contiennent les enregistrements.

      Pour extraire les valeurs des ensembles de données renvoyées et les utiliser dans d'autres actions, définir et exécuter l'action Utiliser le filtre de données sur le contenu de cette variable. Action disponible dans Automation Builder).

    • Résultat des requêtes INSERT, DELETE et UPDATE. Les requêtes INSERT, DELETE et UPDATE renvoient un chiffre indiquant le nombre d'enregistrements affectés dans la table.

  • Répéter pour chaque enregistrement. Si c'est activé, Loftware ajoute automatiquement une nouvelle action Pour chaque enregistrement. Voir plus d'informations sur cette action dans un sujet dédié .

    Toutes les actions indentées sont répétées pour chaque enregistrement renvoyé par la requête SQL.

    Note

    Le mappage de champ de base de données automatique est activé. Les variables d’invite sur votre étiquette se connectent automatiquement à vos champs de base de données avec les mêmes noms. Par exemple :

    Champ de base de données : food_products_1c.ProdCode

    Variable d’invite sur votre étiquette : ProdCode

Réessayer après échec : Ce groupe permet de configurer l'action pour réessayer continuellement de rétablir la connexion à la base de données si la première tentative n'a pas réussi. Si l'action échoue au cours du nombre de tentatives défini, une erreur sera signalée.

  • Nouvelles tentatives : Spécifie le nombre de tentatives de connexion au serveur de la base de données.

  • Intervalle entre les tentatives : Spécifie le temps d'attente entre chaque essai.

Avertissement :

Ne placez pas l'objet Table de base de données sur votre formulaire d'impression si vous utilisez l'action Exécuter une requête SQL. Il se peut que les résultats soient incorrects.

Exemple

Vous souhaitez imprimer des étiquettes avec des données de votre base de données food_products_1c, mais uniquement des enregistrements avec une valeur de champ prédéfinie UseBy.

Vous définissez la valeur Useby avec la variable ProdUser. Dans ce cas, la valeur ProdUser est « 3 ».

Après l’impression de chaque étiquette, Loftware écrit les valeurs de base de données dans un fichier texte sur votre disque. Utilisez la chaîne suivante :

UUID-507bcc38-919d-635b-5209-8706fb3d61e2.png

UUID-cb65b196-d5b2-4725-89d9-14f266f5cb64.png

Seules les étiquettes où la valeur UseBy est égale à « 3 » sont imprimées et les valeurs sont écrites dans un fichier texte :

UUID-637fe74b-7603-a307-be15-a9e8afba04f5.png

Exécution d'une action et traitement d'erreur

Chaque action peut être soumise à condition. Une action conditionnelle ne fonctionne que quand les conditions fournies lui permettent de fonctionner. Pour définir ces conditions, cliquer sur Afficher les options d'exécution et de gestion des erreurs.

Options d'exécution existantes :

  • Activée : Spécifie si l'action est activée ou désactivée. Seules les actions activées seront exécutées. Cette fonctionnalité est utilisable lors du test d'un formulaire.
  • Condition : définit une expression de programmation d'une ligne qui doit fournir une valeur booléenne (vrai ou faux). Quand le résultat de l'expression est vrai, l'action s'exécute. Une condition permet d'éviter que l'action soit exécutée chaque fois.

Options de Traitement d'erreurs :

  • Ignorer l'échec : Spécifie si une erreur doit être ignorée. Si elle est activée, l'exécution des actions continue même si l'action en cours a échoué.

    Remarque

    Les actions indentées qui dépendent de l'action actuelle ne seront pas exécutées en cas d'échec. L'exécution des actions continuera avec l'action suivante qui se trouve au même niveau que l'action actuelle. L'erreur est enregistrée dans le journal, mais elle n'interrompt pas l'exécution de l'action.

  • Exemple

    À la fin de l'impression, il est possible d'envoyer la mise à jour du statut à une application externe en utilisant l'action Requête HTTP . Si l'action d'impression échoue, le déclencheur arrête le traitement des actions. Pour effectuer le rapport, même après un échec d'impression, l'action Imprimer l'étiquette doit avoir l'option Ignorer l'échec activée.

  • Enregistrer l'erreur dans une variable : permet de définir une variable pour y enregistrer l'erreur. La raison de l'erreur est aussi enregistrée dans les variables internes ActionLastErrorId et ActionLastErrorDesc.