Tableaux à deux dimensions

4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant

version 6.0


Chaque commande de déclaration de tableau permet de créer ou de redimensionner des tableaux à une ou à deux dimensions. Exemple :

   TABLEAU TEXTE (atTopics;100;50) ` Créer un tableau texte composé de 100 lignes de 50 colonnes

Les tableaux à deux dimensions sont essentiellement des objets de langage ; vous ne pouvez ni les afficher ni les imprimer.

Dans l'exemple prédédent :

atTopics est un tableau à deux dimensions.

atTopics{8} {5} est le 5e élément (5e colonne...) de la 8e ligne.

atTopics{20} est la 20e ligne et est elle-même un tableau à une dimension.

Taille tableau(atTopics) retourne 100, qui est le nombre de lignes

Taille tableau(atTopics{17}) retourne 50, qui est le nombre de colonnes de la 17e ligne

Dans l'exemple suivant, un pointeur vers chaque champ de chaque table de la base est stocké dans un tableau à deux dimensions :

   C_ENTIER LONG($vlDerniereTable;$vlDernierChamp)
   C_ENTIER LONG($vlNumeroChamp)
      ` Créer autant de lignes (vides et sans colonnes) qu'il y a de tables
   $vlDerniereTable:=Lire numero derniere table
   TABLEAU POINTEUR(<>apChamps;$vlDerniereTable;0)  `Tableau 2D avec N lignes et zéro colonnes
      ` Pour chaque table
   Boucle ($vlTable;1;$vlDerniereTable)
      Si (Est un numero de table valide($vlTable))
         $vlDernierChamp:=Lire numero dernier champ($vlTable) 
            ` Donner la valeur des éléments
         $vlNumeroColonne:=0
         Boucle ($vlChamp;1;$vlDernierChamp)
            Si (Est un numero de champ valide($vlTable;$vlChamp))
               $vlNumeroColonne:=$vlNumeroColonne+1
                  `Insère une colonne dans la ligne de la table en cours
               INSERER DANS TABLEAU(<>apChamps{$vlTable};$vlNumeroColonne;1)
                  `Affecte la "celulle" avec le pointeur
               <>apChamps{$vlTable}{$vlNumeroColonne}:=Champ($vlTable;$vlChamp)
            Fin de si 
         Fin de boucle
      Fin de si
   Fin de boucle 

Dans la mesure où le tableau à deux dimensions a été initialisé, vous pouvez obtenir ainsi les pointeurs vers les champs d'une table de votre choix :

      ` Obtenir les pointeurs vers les champs pour la table affichée à l'écran:
   COPIER TABLEAU (<>apChamps{Table(Table du formulaire courant)};$apMesChampsdeTravail)
      ` Initialiser les champs booléens et date
   Boucle ($vlElem;1;Taille tableau($apMesChampsdeTravail))
      Au cas ou
         : (Type($apMesChampsdeTravail{$vlElem} ->)=Is Date)
            $apMesChampsdeTravail{$vlElem} ->:=Date du jour
         : (Type($apMesChampsdeTravail{$vlElem} ->)=Is Boolean)
            $apMesChampsdeTravail{$vlElem} ->:=Vrai
      Fin de cas
   Fin de boucle
   

Note : Comme le montre cet exemple, les lignes des tableaux à deux dimensions peuvent être ou non de la même taille, indifféremment.

Référence

Présentation des tableaux.


4D - Documentation   Français   English   German   Español   4D v11 SQL, Commandes par thèmes   4D v11 SQL, Liste alphabétique des commandes   4D v11 SQL, Constantes par thèmes   Retour   Précédent   Suivant