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 — Ce sont des collections que l'on peut uniquement parcourir.
Unordered collections — Ce sont des collections pour lesquelles l'ordre des objets dans la liste n'a pas d'importance, par exemple la collection Relationships d'une entité de MCD est une collection non ordonnée.
Ordered collections — Ce sont des collections pour lesquelles l'ordre des objets dans les propriétés ou les méthodes utilisées est défini par l'utilisateur et doit être respecté, par exemple la collection Columns d'une table de MPD est une collection ordonnée.
Composition collections - Ce sont des collections pour lesquelles les objets appartiennent au propriétaire de la collection. Elles sont généralement affichée dans Explorateur d'objets. Les collections qui ne sont pas des compositions peuvent également être accessibles via le scripting. Il peut s'agir par exemple de la liste des règles de gestion associées à une table ou à une classe et affichées dans l'onglet Règles de la feuille de propriétés ou dans la liste des objets affichée dans l'onglet Dépendances de la feuille de propriétés d'un objet.
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
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
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)
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
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.