Chapter 9 Accès aux objets via VBScript


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 de 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'objetMetaCollection qui définit cette collection
Kind As Long Récupère le type d'objet que la collection peut contenir
Source As BaseObject Récupère l'objet qui possède la collection

Exemple :

'How to get the number of active 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
Source As Object Récupère l'objet qui détient la collection
Kind As Long Récupère le type de l'objet
Add(obj As Object) Ajoute un objet en dernière position dans la collection
Remove(obj As Object, delete As Boolean = False) Ote un objet donné d'une collection et, le cas échéant, le supprime
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 Object) 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. Reportez-vous au fichier d'aide HTML 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 Object 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 Object 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 cependant être appelées avec succès sur des collections non-ordonnées, même si elles ne semblent pas être des collections de composition. C'est le cas par exemple lorsque des collections sont des vues calculées d'autres collections qui, elles, peuvent être des collections de composition.

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
'Assuming the variable MyTable contains 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 columns is created with a default name and code

Note   Parcourir les collections d'un modèle
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.

 


Copyright (C) 2005. Sybase Inc. All rights reserved.