Problème de remplissage d'une collection d'objet ... a l'aide!
Poolky
Messages postés20Date d'inscriptionsamedi 25 novembre 2000StatutMembreDernière intervention 2 août 2006
-
17 févr. 2006 à 15:19
Poolky
Messages postés20Date d'inscriptionsamedi 25 novembre 2000StatutMembreDerniè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
A voir également:
Problème de remplissage d'une collection d'objet ... a l'aide!
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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.
katsankat
Messages postés571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 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.
Poolky
Messages postés20Date d'inscriptionsamedi 25 novembre 2000StatutMembreDerniè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.