Requêtes avec paramètres

Chapitre parent Chapitre précédent Chapitre suivant

Pour faciliter la réutilisation au fil du temps de requêtes enregistrées, LDSQL permet d'enregistrer des requêtes comportant des paramètres.

Ces paramètres sont souvent utilisés pour sélectionner les données à afficher. Par exemple, pour afficher des écritures comptables, on pourra avoir en paramètre le choix du code journal ou de la période à afficher.

Lorsqu'une requête comporte des paramètres, la valeur des paramètres doit être saisie à chaque exécution de la requête.


Définition des paramètres dans la requête

La saisie des paramètres au sein de la commande SQL doit respecter une syntaxe précise, propre à LDSQL (on n'est plus dans le langage SQL). Ces paramètres doivent être saisis entre accolades.

La syntaxe générale d'un paramètre est  {Nom:Type:ValeurDéfaut}


Exécution d'une requête ayant des paramètres

A chaque exécution, la fenêtre de saisie des paramètres sera présentée :


En partie centrale, on trouve la liste des différentes paramètres. Les valeurs peuvent être saisies, au choix


Notez l'usage de la valeur par défaut indiquée pour chaque paramètre dans sa définition. Cette valeur par défaut est proposée à la première exécution de la requête. Si on ré-exécute ensuite plusieurs fois la même requête, on retrouve les valeurs de paramètres utilisées lors de l'exécution précédente.


Dans la fenêtre principale, suite à l'exécution d'une requête ayant des paramètres, un nouveau bouton (raccourci F10) permet de basculer entre la requête d'origine (avec la définition des paramètres) et la requête paramétrée qui a été réellement exécutée.


Paramètres optionnels

On souhaite parfois « contourner » l'usage d'un paramètre de sélection. Par exemple, dans une requête d'affichage des écritures comptables, on souhaite proposer une sélection par journal, tout en donnant la possibilité d'afficher tous les journaux. De même, on peut proposer une sélection du type d'écriture Débit ou Crédit, en se laissant la possibilité d'afficher à la fois les écritures au début et au crédit.

LDSQL ne permettant pas de rendre un paramètre optionnel, il faut contourner ce problème en opérant une double sélection faisant appel 2 fois au même paramètre.

Premier exemple : sélection des écritures comptables d'un journal, de plusieurs journaux ou de de tous :

Syntaxe dans la commande SQL :                        WHERE (JNAL IN ('{Code journal (*=Tous):LISTEMAJ:*}') OR '{Code journal (*=Tous)}'='*')

Commande exécutée si on saisit la valeur AC :        WHERE (JNAL IN ('AC') OR 'AC'='*')

Commande exécutée si on saisit la valeur AC,VE :        WHERE (JNAL IN ('AC','VE') OR 'AC,VE'='*')

Commande exécutée si on saisit la valeur * :        WHERE (JNAL IN ('*') OR '*'='*')

Explications : on voit que le même paramètre {Code journal (*=Tous)} a été utilisé 2 fois dans la commande. Pour la saisie, c'est la définition indiquée dans la première occurrence du paramètre qui est utilisée. Pour les autres occurrences, il n'est pas nécessaire d'indiquer le type et la valeur par défaut, mais il faut reprendre exactement le nom du paramètre. Autre particularité : comme dans la 2ème occurrence du paramètre, on n'a ps indiqué le type LISTEMAJ, la valeur retournée ne contient pas les apostrophes entre les différentes valeurs, ce qui est effectivement nécessaire pour que la syntaxe de la commande soit correcte.


Deuxième exemple : sélection des écritures comptables au débit, au crédit ou les deux :

Syntaxe dans la commande SQL :                        (CODC='{Débit Crédit:Liste[D=Débit;C=Crédit;*=Les deux]:*}' OR '{Débit Crédit}'='*')

Commande exécutée si on saisit D=Débit :                WHERE (CODC='D') OR 'D'='*')

Commande exécutée si on saisit *=Les deux :        WHERE (CODC='*') OR '*'='*')