Poolky
Messages postés20Date d'inscriptionsamedi 25 novembre 2000StatutMembreDernière intervention 2 août 2006
-
20 févr. 2006 à 10:13
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
20 févr. 2006 à 11:20
Bonjour à vous,
J'ai une méthode UtilCourant et j'aimerais qu'elle me renvoie un objet du type Personnel.
si j'ai bien compris la logique VB (rien n'est moins sur ) je dois fais quelque chose du genre
Public Function UtilCourant () As Personnel
...
Traitement
...
UtilCourant = ObjPersonnel
End Function
Le problème c'est que ca ne fonctionne pas.
Il me fait un message de type : "L'objet ne gère pas cette propriete ou cette methode"
Est ce que cela vient de ma methode ou de ma classe?
Pouvez vous me donner des pistes?
Merci par avance
Voici mon code
'Variables globales
Private UtilisateurCourant As Personnel
Private m_Utilisateur As Personnel
'Appel de la fonction
Private Sub CmdOK_Click()
Set utilisateurCourant = New Personnel
utilisateurCourant = UtilCourant ':UtilCourant devrait renvoyer un obj Personnel que je stocke dans utilisateurCourant
End Sub
'Methode UtilCourant
Public Function UtilCourant() As Personnel
Dim strNom As String
Dim strMDP As String
Dim Util1 As Personnel
Set con = New Connection 'Instanciation de la connexion
Set Rec = New Recordset 'Instanciation du Recordset
Set Util1 = New Personnel
Set UtilCourant = New Personnel
con.Provider = "Microsoft.Jet.Oledb.4.0" 'definition du pilote de connexion
con.ConnectionString = "D:\DataBase.mdb" 'renseignement de la base à laquelle on va se connecter
con.Open 'Ouverture de la connexion
Rec.Open "SELECT * FROM Personnel where Nom= '" & strNom & "' and '" & strMDP & "'", con, adOpenDynamic, adLockOptimistic 'execution de la requete
If Rec.BOF = False Then
With Util1
.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
MsgBox "utilisateur ok"
'Set m_UtilisateurCourant = New Personnel Ne pas tenir compte
UtilCourant = Util1 ' Endroit ou je voudrais retourner l'objet
Me.Hide
Else
MsgBox "pas d'utilisateur"
Me.Hide
End If
Rec.Close 'Fermeture du recordset
con.Close 'Fermeture de la connexion
End Function
classe Personnel
'Déclaration des variables
Private m_Nom As String
Private m_Prenom As String
Private m_Password As String
Private m_G1 As Boolean
Private m_G2 As Boolean
Private m_G3 As Boolean
Private m_G4 As Boolean
Private m_G5 As Boolean
Private m_Droits As Integer
Private Sub Class_Initialize()
End Sub
'---------------------------------------------------------------------------------------------
Modifieurs
'---------------------------------------------------------------------------------------------
Public Property Let Nom(ByVal strNom As String)
m_Nom = strNom
End Property
Public Property Let Prenom(ByVal strPrenom As String)
m_Prenom = strPrenom
End Property
Public Property Let PASSWORD(ByVal strPassword As String)
m_Password = strPassword
End Property
Public Property Let G1(ByVal bG1 As Boolean)
m_G1 = bG1
End Property
Public Property Let G2(ByVal bG2 As Boolean)
m_G2 = bG2
End Property
Public Property Let G3(ByVal bG3 As Boolean)
m_G3 = bG3
End Property
Public Property Let G4(ByVal bG4 As Boolean)
m_G4 = bG4
End Property
Public Property Let G5(ByVal bG5 As Boolean)
m_G5 = bG5
End Property
Public Property Let DROITS(ByVal nDroits As Integer)
m_Droits = nDroits
End Property
A voir également:
Problèmes problème de gestion du retour d'une fonction ...
Poolky
Messages postés20Date d'inscriptionsamedi 25 novembre 2000StatutMembreDernière intervention 2 août 2006 20 févr. 2006 à 10:44
Salut Julien,
Mon erreur se trouve à la ligne
UtilCourant = Util1 ' Endroit ou je voudrais retourner l'objet
J'ai fais la modification que tu m'as conseillée, et j'ai toujours la même erreur sauf qu'elle s'est déplacée.
Je le retrouve maintenant sur mon End Function.
Je ne vois vraiment pas d'ou cela peu venir...
Poolky
Messages postés20Date d'inscriptionsamedi 25 novembre 2000StatutMembreDernière intervention 2 août 2006 20 févr. 2006 à 11:02
Lorque j'execute mon programme en debugger , tout se déroule correctement, et au moment ou il sort de la fonction, il me fait cette erreur:
Erreur d'execution '438':
L'objet ne gère pas cette propriété ou cette méthode.
Voici le déroulement:
'Variables globales
Private UtilisateurCourant As Personnel
Private m_Utilisateur As Personnel
'Appel de la fonction
Private Sub CmdOK_Click()
Set utilisateurCourant = New Personnel
utilisateurCourant = UtilCourant ':UtilCourant devrait renvoyer un obj Personnel que je stocke dans utilisateurCourant
End Sub
'Methode UtilCourant
Public Function UtilCourant() As Personnel
Dim strNom As String
Dim strMDP As String
Dim Util1 As Personnel
Set con = New Connection 'Instanciation de la connexion
Set Rec = New Recordset 'Instanciation du Recordset
Set Util1 = New Personnel
Set UtilCourant = New Personnel
con.Provider = "Microsoft.Jet.Oledb.4.0" 'definition du pilote de connexion
con.ConnectionString = "D:\DataBase.mdb" 'renseignement de la base à laquelle on va se connecter
con.Open 'Ouverture de la connexion
Rec.Open "SELECT * FROM Personnel where Nom= '" & strNom & "' and '" & strMDP & "'", con, adOpenDynamic, adLockOptimistic 'execution de la requete
If Rec.BOF = False Then
With Util1
.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 <= Mon obj Util1 est parfaitement remplit
MsgBox "utilisateur ok"
'Set m_UtilisateurCourant = New Personnel Ne pas tenir compte UtilCourant Util1 ' Endroit ou je voudrais retourner l'objet> J'ai bien UtilCourant = Util1 , toutes leurs données sont OK
Me.Hide
Else
MsgBox "pas d'utilisateur"
Me.Hide
End If
Rec.Close 'Fermeture du recordset
con.Close 'Fermeture de la connexion
End Function <= Message d'erreur