Bonjour hellalaboy,
Le caractère "!" est un "opérateur d'accès spécial".
C'est un raccourci syntaxique pour accéder à un élément au sein d'une hiérarchie de classes.
Cet opérateur d'accès utilise les propriétés par défaut des classes.
Dans ton cas, la racine est rs un objet instance de la classe Recordset.
La propriété par défaut de la classe Recordset est Get Fields() qui retourne un objet instance de la classe Fields.
Un objet Fields recense une collection d'objets instances de la classe Field, et qu'il peut désigner au moyen de 2 index:
* un index numérique qui représente la position de l'objet Field dans la collection;
* un index textuel pour désigner un objet Field au moyen d'un "nom" (une clé textuelle).
La propriété par défaut de la classe Fields est Get Item(vIndex As Variant) qui retourne un objet appartenant à la collection, désigné par une valeur d'index.
Tu n'es pas obligé d'utiliser l'opérateur d'accès "!".
A la place, on peut employer la syntaxe complète équivalente qui serait celle-ci:
1 2 3 4 5 6 7 8 9 10
|
Set rs = cn.OpenSchema(adSchemaColumns)
While Not rs.EOF
If rs.Fields.Item("table_name").Value = listbox1.Text Then
Champs.AddItem rs.Fields.Item("COLUMN_NAME").Value
End If
rs.MoveNext
Wend
rs.Close |
Le fonctionnement de l'opérateur d'accès "!" est générique et s'appuie sur les propriétés par défaut (et pas sur les noms des propriétés).
Le développement "en interne" de l'expression:
<objet racine>!<valeur d'index>
donnerait ceci:
<objet racine>.<propriété par défaut de la racine>.<propriété par défaut de la classe "collection">("<valeur d'index>")
Il est donc possible à un développeur VB/VBA de concevoir sa propre hiérarchie de classes compatible avec l'emploi de "!".
_
Partager