Problème de remplissage d'une collection d'objet ... a l'aide!

Poolky Messages postés 20 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 2 août 2006 - 17 févr. 2006 à 15:19
Poolky Messages postés 20 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 2 août 2006 - 17 févr. 2006 à 20:07
Bonjour a tous, voici mon problème:
J'ai une collection:

Dim TabUtils As Collection

Dans cette collection je souhaite stocker des objets de type "Personnel" qui provienne d'une classe du même nom.
Dans la logique de mon programme je doit tout d'abord ressortir par une requête la totalité du personnel et ensuite les stocker dans la collection.
Jusqu'a la tout va bien ...
J'ai créer une boucle dans laquelle je recupere les resultat de ma requete champs par champs pour les mettre dans mon objet provisoire.
Le problème intervient a la ligne:

TabUtils.Add UserProv, str2

A chaque fois que je rajoute un objet dans la collection, les autre qui y sont deja rentré prenne sa valeur
du type:
Item1=UserProv
Item2=UserProv=Item1
Item3=UserProv=Item1=Item2
ect...
Merci par avance pour ce qui voudront bien me proposer quelques suggestions afin de pouvoir remplir correctement ma collection

Ps: je suis un débutant VB

Voici le code "complet":

Private Sub ChargerUtils()
'Déclaration des variables locales
Dim UserProv As New Personnel
Dim i As Variant
Dim str As Variant
Dim str2 As Variant

'Instanciation de la connexion et du Recordset
Set con = New Connection
Set Rec = New Recordset


Set TabUtils = New Collection

'définition du pilote de connexion
con.Provider = "Microsoft.Jet.Oledb.4.0"

'renseignement de la base à laquelle on va se connecter
con.ConnectionString = "D:\DataBase.mdb"

'Ouverture de la connexion
con.Open

i = 1
'execution de la requete
Rec.Open "SELECT * FROM Personnel", con, adOpenDynamic, adLockOptimistic 'requete ok


'Remplissage de la collection tant que le Recordset n'est pas au dernier champs
Do While Rec.EOF = False
str = "key"
str2 = str & i
On Error GoTo erreur
With UserProv
.Nom = Rec.Fields("Nom")
.Prenom = Rec.Fields("Prénom")
.PASSWORD = Rec.Fields("Password")
.G1 = Rec.Fields("G1")
.G2 = Rec.Fields("G2")
.G3 = Rec.Fields("G3")
.G4 = Rec.Fields("G4")
.G5 = Rec.Fields("G5")
.DROITS = Rec.Fields("Droits")
End With

'Déplacement du curseur vers le prochain enregistrement
Rec.MoveNext

'Ajout de l'objet Personnel courant dans la collection
TabUtils.Add UserProv, str2 <- problème
i = i + 1
Loop

'Fermeture des variables de connexion et Recordset
Rec.Close
con.Close
Exit Sub
erreur:
MsgBox Err.Description
End Sub

4 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 29
17 févr. 2006 à 16:48
En tete de ta boucle, fait un "Set UserProv = New Personnel"
et déclare UserProv sans l'instancier par "Dim UserProv As Personnel"
Le but étant de créer une nouvelle instance de UserProv à chaque tour de boucle.

CR
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 29
17 févr. 2006 à 16:51
Au passage, je ne vois pas l'utilité de passer par une var str pour construire ta clé d'item !

Christophe R
0
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
17 févr. 2006 à 19:09
Salut les amis :)

L' argument key doit être une expression de chaîne. Key est facultatif
mais "un identifiant indiquant une chaîne de clé susceptible d'être
utilisée à la place de l' index de position pour accéder à un membre de
la collection". Si pas string, provoque une erreur.
0
Poolky Messages postés 20 Date d'inscription samedi 25 novembre 2000 Statut Membre Dernière intervention 2 août 2006
17 févr. 2006 à 20:07
Merci beaucoup crenaud76, je me doutais
qu'il y avait un probleme avec mon instance d'objet mais comme tu peux
le voir ça ne m'a pas empécher de bloquer sur le problème.

Encore merci pour votre contribution
0