Il est possible de placer directement le résultat d’une requête SQL dans une list box de type tableau. Cette fonction offre un moyen rapide de visualiser le résultat des requêtes SQL. Seules les requêtes de type SELECT peuvent être utilisées. Ce mécanisme n’est pas utilisable avec une base SQL externe.
Les principes de mise en oeuvre sont les suivants :
- Vous créez la list box devant recevoir le résultat de la requête. La source de données de la list box doit être Tableaux.
- Vous exécutez la requête SQL de type SELECT et assignez le résultat à la variable associée la list box. Vous pouvez utiliser les mots-clés Debut SQL/Fin SQL (cf. manuel Langage de 4D).
- Les colonnes de la list box sont triables et modifiables par l’utilisateur.
- Chaque nouvelle exécution d’une requête SELECT avec la list box provoque la réinitialisation des colonnes (il n’est pas possible de remplir progressivement une même list box à l’aide de plusieurs requêtes SELECT).
- Il est préférable de placer dans la list box autant de colonnes qu’il y aura de colonnes SQL dans le résultat de la requête SQL. Si le nombre de colonnes de la list box est inférieur à celui requis par la requête SELECT, des colonnes sont automatiquement ajoutées. Si le nombre de colonnes de la list box est supérieur à celui requis par la requête SELECT, les colonnes superflues sont automatiquement masquées.
Note : Les colonnes ajoutées automatiquement sont liées à des Variables dynamiques de type tableau. La durée de vie de ces tableaux dynamiques est celle du formulaire. Une variable dynamique est également créée pour chaque en-tête. Lorsque la commande LISTBOX LIRE TABLEAUX est appelée, le paramètre tabVarCols contient des pointeurs vers les tableaux dynamiques et le paramètre tabVarEntêtes contient des pointeurs vers les variables d’entête dynamiques. Si une colonne ajoutée est par exemple la cinquième, son nom est sql_column5 et son nom d’en-tête sql_header5. - En mode interprété, les tableaux existants et utilisés pourront être retypés automatiquement en fonction des données renvoyées par la requête SQL.
Exemple
Nous voulons récupérer tous les champs de la table PERSONS et placer leur contenu dans la list box dont le nom de variable est vlistbox. Dans la méthode objet d’un bouton (par exemple), il suffit d’écrire :
Debut SQL
SELECT * FROM PERSONS INTO <<vlistbox>>
Fin SQL