OPALE - 10.0 - Utilisation

Tableaux

De MappingDoc
Révision datée du 13 mai 2019 à 15:11 par Izarai (discussion | contributions) (Tri et filtrage des valeurs d'un tableau)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Tableaux

Connect permet de créer des tableaux qui sont en réalité des tables SQL embarquées auxquelles certaines fonctionnalités ont été ajoutées telles que la possibilité d'ajouter des valeurs, consulter et compter le nombre d'éléments.

Les tableaux sont un excellent moyen de stocker des données temporaires en mémoire pour y accéder rapidement lorsque c'est nécessaire.Les tableaux peuvent aussi servir à générer des listing.

Pour créer un nouveau tableau, il suffit de cliquer avec le bouton droit dans la fenêtre des Tables et de choisir Create New Array.

La fenêtre suivante s'affiche, entrer :

  • le nom du tableau
  • le chemin où le tableau sera sauvegardé (optionnel)


OP C crtTab.png


Si le chemin n'est pas spécifié, le tableau sera gardé en mémoire, exécuté, puis détruit après exécution. Par contre, si un chemin est précisé, le tableau sera sauvegardé à l'endroit indiqué de manière à pouvoir être réutilisé, y compris dans d'autres projets.

Pour ajouter des colonnes au tableau, il faut ajouter des champs (comme pour toute autre table). Pour chaque champ, il faut préciser le nom et le type. Par défaut, la valeur des champs de type Entier est 0.

Pour information, voici le code source d'une table contenant 6 colonnes et 2 index.

CreateArray("array", "E:\\array.db")
{
    AddString("region","",10)
    AddString("store","",20)
    AddString("article","",10)
    AddInt("nbVente","",10)
    AddInt("price","",10)
    AddInt("total","",10)
    SetPrimaryKey(array,"region")
    SetPrimaryKey(array,"store")
}
CreateActionsList(DB)
{
Execute(array){}
}

Fonctions de base :

La suppression des valeurs d’un tableau se fait via la fonction ClearArray (array)

La fonction DuplicateArray permet de faire une copie d’un tableau dans un autre DuplicateArray (array, array_copy)

La fonction CountArray retourne le nombre d’éléments que contient le tableau DB.nb = CountArray (array)

La fonction SumArray calcule la somme des colonnes. Les valeurs sont affectées aux champs du tableau. SumArray (array, "total", "nbVente")

Consultation des valeurs

Pour consulter des valeurs dans un tableau, il faut utiliser les fonctions Foreach et NextRead.

Foreach(array) {}
write(DB.array) {}
NextRead() {}

Ou via la fonction GetArrayValue pour une valeur du tableau en fonction d’une ligne et d’une colonne.

Remarque : Foreach: Cette instruction permet de lire le contenu du tableau traité actuellement.Paramètre est "nom du tableau"

NextRead: Cette instruction permet de lire l'enregistrement suivant dans la table (tant que la clef de lecture du fichier est identique). Elle est créée automatiquement dans le script standard.

Exemple : pour récupérer la valeur de la colonne 5 de la ligne 10

GetArrayValue  (tableau, 10 , 5 )

Tri et filtrage des valeurs d'un tableau

La fonction FilterArray permet de filtrer les valeurs et s'applique à toutes les fonctions des tableaux.La fonction ci-dessous liste les valeurs du tableau où "Store" est égal à "North".

Lorsqu'un filtre est appliqué, il s'applique aussi à toutes les actions suivantes. Pour l'enlever, il faut appeler la fonction à nouveau avec un filtre vide. Dans l'exemple suivant, le filtre s'applique aux fonctions SumArray, Write et RemoveArray.

FilterArray (array, "article = 'TV' ")
SumArray (array, "total")
Foreach(array)
Write(DB.tab){}
NextRead() {]
RemoveArray (array)
FilterArray (array)

Avant d'afficher les valeurs, vous pouvez les trier avec la fonction SortArray. Cette fonction accepte une liste de colonnes comme paramètres.

SortArray( array, "region", "store")

Remarque :

Une fois appliquées, les deux fonctions continueront à s'appliquer tant qu'elles ne sont pas réinitialisées. Lors d'une utilisation dans une fonction CONNECT, elle s'appliqueront toujours à la fin d'une fonction. Par conséquent, l'utilisateur doit les réinitialiser avant la fin de la fonction.