4D v16

Recevoir le résultat d'une requête SQL dans un tableau

Accueil

 
4D v16
Recevoir le résultat d'une requête SQL dans un tableau

Recevoir le résultat d'une requête SQL dans un tableau  


 

 

Nous souhaitons maintenant utiliser dans la requête une variable contenant l'année (et non l'année elle-même) et récupérer la liste de tous les films tournés depuis 1960. De plus, pour chaque film trouvé, nous voulons obtenir plusieurs informations : l'année, le titre, le réalisateur, le support media et le nombre d'entrées. La solution consiste à récupérer ces informations dans des tableaux ou une list box.

  • Cette recherche se traduirait ainsi en code 4D :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     C_ENTIER LONG($MovieYear)
     
     REDUIRE SELECTION([MOVIES];0)
     $MovieYear:=1960
     CHERCHER([MOVIES];[MOVIES]Year_of_Movie>=$MovieYear)
     SELECTION VERS TABLEAU([MOVIES]Year_of_Movie;aMovieYear;[MOVIES]Title;aTitles;[MOVIES]Director;aDirectors;
     [MOVIES]Media;aMedias;[MOVIES]Sold_Tickets;aSoldTickets)
      ` Initialiser le reste des colonnes de la list box afin de visualiser les informations
     TABLEAU ENTIER LONG(aNrActors;Taille tableau(aMovieYear))
  • En utilisant du code SQL :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     C_ENTIER LONG($MovieYear)
     
     $MovieYear:=1960
     Debut SQL
        SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets
        FROM MOVIES
        WHERE Year_of_Movie >= :$MovieYear
        INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;
     Fin SQL

Comme vous pouvez le constater :

  • Il est possible de passer une variable ($MovieYear) à la requête SQL en utilisant la même notation que pour recevoir des paramètres.
  • Les résultats de la requête SQL sont stockés dans les tableaux aMovieYear, aTitles, aDirectories, aMedias et aSoldTickets. Ils sont affichés dans la fenêtre principale de deux manières :
    • via des tableaux groupés :

    • via une list box :

  • En utilisant les commandes SQL génériques :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     C_ENTIER LONG($MovieYear)
     C_TEXTE($tQueryTxt)
     
     REDUIRE SELECTION([MOVIES];0)
     $MovieYear:=1960
     SQL LOGIN(SQL_INTERNAL;"";"")
     $tQueryTxt:=""
     $tQueryTxt:=$tQueryTxt+"SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets"
     $tQueryTxt:=$tQueryTxt+" FROM MOVIES"
     $tQueryTxt:=$tQueryTxt+" WHERE Year_of_Movie >= :$MovieYear"
     SQL EXECUTER($tQueryTxt;aMovieYear;aTitles;aDirectors;aMedias;aSoldTickets)
     SQL CHARGER ENREGISTREMENT(SQL tous les enregistrements)
     SQL LOGOUT
  • En utilisant la commande CHERCHER PAR SQL :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     C_ENTIER LONG($MovieYear)
     
     REDUIRE SELECTION([MOVIES];0)
     $MovieYear:=1960
     CHERCHER PAR SQL([MOVIES];"Year_of_Movie >= :$MovieYear")
     SELECTION VERS TABLEAU([MOVIES]Year_of_Movie;aMovieYear;[MOVIES]Title;aTitles;[MOVIES]Director;aDirectors;
     [MOVIES]Media;aMedias;[MOVIES]Sold_Tickets;aSoldTickets)
  • En utilisant la commande SQL dynamique EXECUTE IMMEDIATE :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     C_ENTIER LONG($MovieYear)
     C_TEXTE($tQueryTxt)
     
     REDUIRE SELECTION([MOVIES];0)
     $MovieYear:=1960
     $tQueryTxt:=""
     $tQueryTxt:=$tQueryTxt+"SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets"
     $tQueryTxt:=$tQueryTxt+" FROM MOVIES"
     $tQueryTxt:=$tQueryTxt+" WHERE Year_of_Movie >= :$MovieYear"
     $tQueryTxt:=$tQueryTxt+" INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;"
     Debut SQL
        EXECUTE IMMEDIATE :$tQueryTxt;
     Fin SQL

Pour tester tous ces exemples, lancez la base "4D SQL Code Samples" et affichez la boîte de dialogue principale. Choisissez le mode d'interrogation du moteur de 4D et cliquez sur le bouton Requêtes SQL vers tableaux.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Prise en main
Nom intl. : Receiving an SQL query result into arrays

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Référence SQL ( 4D v16)