Collections

Une collection désigne un ensemble d'objets.

Le modèle est l'objet racine et les autres objets sont accessibles en parcourant la collection correspondante. Ces objets sont regroupés au sein de collections que l'on peut comparer aux noeuds d'objets apparaissant dans l'arborescence de l'Explorateur d'objets.

Si un objet CLIENT possède une collection, cela signifie que la collection contient la liste des objets avec lesquels l'objet CLIENT est en relation.

Certaines fonctions sont disponibles sur les collections. Vous pouvez :

Les collections peuvent être des types suivants :

Read-only collections (collections en lecture seule)

Models est la collection globale des modèles ouverts. C'est un exemple de collection en lecture seule.

Les propriété et méthodes disponibles pour les collections en lecture seule sont les suivantes :

Propriété ou méthode

Utilisation

Count As Long

Récupère le nombre d'objets contenus dans une collection.

Item(idx As Long = 0) As BaseObject

Récupère l'objet (item) au sein d'une collection pour un indice donné. Item(0) étant le premier objet.

MetaCollection As BaseObject

Récupère l'objet MetaCollection qui définit cette collection.

Kind As Long

Récupère le type d'objet que la collection peut contenir. Renvoie une constante prédéfinie telle que cls_.

Source As BaseObject

Récupère l'objet qui possède la collection.

Exemple :

'How to get the number of open models and display it 
'in the output window
output Models.count

Unordered collections (collections non ordonnées

Toutes les méthodes et les propriétés des collections en lecture seule sont également disponibles pour les collections non ordonnées.

Les propriétés et les méthodes disponibles pour les collections non ordonnées sont les suivantes :

Propriété ou méthode

Utilisation

Add(obj As BaseObject)

Ajoute un objet en dernière position dans la collection.

Remove(obj As BaseObject, delete As Boolean = False)

Ote un objet donné d'une collection et, le cas échéant, le supprime.

CreateNew(kind As Long = 0) As BaseObject

Crée un objet d'un type donné, et l'ajoute à la fin de la collection. Si aucun type d'objet n'est spécifié, la valeur 0 est utilisée, ce qui signifie que la catégorie Kind de la collection sera utilisée. Voir le fichier d'aide sur les objets du métamodèle pour connaître les restrictions relatives à l'utilisation de cette méthode.

Clear(delete As Boolean = False)

Ote tous les objets de la collection et, le cas échéant, les supprime.

Exemple :

'remove table TEST from the active model
Set MyModel = ActiveModel
For each T in Mymodel.Tables
   If T.code = "TEST" then
       set MyTable = T
   End if
next
ActiveModel.Tables.Remove MyTable, true

Ordered collections (collections ordonnées)

Toutes les méthodes et les propriétés des collections en lecture seule et non ordonnées sont également disponibles pour les collections ordonnées.

Les propriétés et les méthodes disponibles pour les collections ordonnées sont les suivantes :

Propriété ou méthode

Utilisation

Insert(idx As Long = -1, obj As BaseObject)

Insère des objets dans une collection. Si aucun indice n'est fourni, l'indice –1 est utilisé par défaut. Cela signifie que l'objet est simplement ajouté en dernière position dans la collection.

RemoveAt(idx As Long = -1, delete As Boolean = False)

Retire l'objet de la collection en fonction de l'indice donné. Si aucun indice n'est fourni, l'indice –1 est utilisé par défaut. Cela signifie que l'objet est simplement ajouté en dernière position dans la collection (le cas échéant). L'objet peut également être supprimé.

Move(source As Long, dest As Long)

Déplace l'objet de son indice source vers son indice de destination.

CreateNewAt( idx As Long = -1, kind As Long = 0) As BaseObject

Crée un objet d'un type donné, et l'insère à un emplacement spécifié. Si aucun indice n'est fourni, l'indice -1 est utilisé, ce qui signifie que l'objet est simplement ajouté comme dernier objet de la collection. Si aucun type d'objet n'est spécifié, la valeur 0 est utilisée, elle signifie que la propriété Kind sera utilisée. Voir le fichier d'aide sur les objets du métamodèle pour plus d'information sur les restrictions d'utilisation de cette méthode.

Exemple :

'Move first column in last position
'Assuming the variable MyTable contains a table
MyTable.Columns.move(0,-1)

Composition collections (collections de composition)

Les collections de composition peuvent être ordonnées ou non ordonnées.

Toutes les méthodes et les propriétés des collections non ordonnées sont également disponibles pour les compositions non ordonnées.

Les propriétés et les méthodes disponibles pour les collections de composition non ordonnées sont les suivantes :

Propriété ou méthode

Utilisation

CreateNew(kind As Long = 0) As BaseObject

Crée un objet d'un type donné et l'ajoute en dernière position dans la collection. En l'absence de type d'objet spécifié, la valeur 0 est utilisée par défaut pour indiquer que la propriété Kind de la collection sera utilisée.

Toutes les méthodes et les propriétés des collections ordonnées sont également disponibles pour les compositions ordonnées.

Toutes les méthodes et les propriétés des compositions non ordonnées sont également disponibles pour les compositions ordonnées.

Les propriétés et les méthodes disponibles pour les collections de composition ordonnées sont les suivantes :

Propriété ou méthode

Utilisation

CreateNewAt( idx As Long = -1, kind As Long = 0) As BaseObject

Crée un objet d'un type donné et l'insère à une position donnée. En l'absence d'indice spécifié, l'indice – 1 est utilisé par défaut pour indiquer que l'objet est simplement ajouté en dernière position dans la collection. En l'absence de type d'objet spécifié, la valeur 0 est utilisée par défaut pour indiquer que la propriété Kind de la collection sera utilisée.

Ces méthodes peuvent être appelées en l'absence de type d'objet spécifié. Toutefois, cela n'est possible que lorsque la collection est fortement typée, c'est-à-dire que la collection doit contenir des objets d'un type non abstrait précis. Dans de tels cas, la propriété Kind de la collection correspond à une classe instanciable et la courte description de la collection désigne le nom du type d'objet.

Exemple :

La collection Columns d'une table est une collection de composition car vous pouvez créer des colonnes depuis cette collection. En revanche, la collection Columns d'une clé n'est pas une collection de composition car il est impossible de créer des objets (colonnes) depuis cette collection mais seulement possible de les lister.

'Create a new table in a model
'Assuming the variable MyModel contains a PDM
'Declare a new variable object MyTable
Dim MyTable
'Create a new table in MyModel
Set MyTable = MyModel.Tables.Createnew
'Create a new column in a table
'Declare a new variable object MyColumn
Dim MyColumn
'Create a new column in MyTable in 3rd position
Set MyTable = MyTable.Columns.CreateNewAt(2)
' the column is created with a default name and code
Remarque :

Lorsque vous parcourez les collections d'un modèle pour récupérer ces objets, sachez que vous récupérerez aussi les raccourcis des objets de même type.