Problèmes problème de gestion du retour d'une fonction ...

Résolu
Signaler
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
2 août 2006
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
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

strNom = frmLogin.txtUserName
strMDP = frmLogin.txtPassword

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

10 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,

Tu peux essayer ceci aussi:

Remplacer dans Private Sub CmdOK_Click()

Set utilisateurCourant = New Personnel
utilisateurCourant = UtilCourant ':UtilCourant devrait renvoyer un obj Personnel que je stocke

par

Set utilisateurCourant = UtilCourant

@+
Julien
____________________________
Ne pas oublier:
- le "réponse acceptée"
</SPA< body>
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

A quel ligne exactement VB te retourne le message d'erreur.

Sinon peu etre remplacer:

UtilCourant = Util1 ' Endroit ou je voudrais retourner l'objet

par

Set UtilCourant = Util1 ' Endroit ou je voudrais retourner l'objet

Mais je ne suis pas sur que cela change quelque chose.
@+
Julien
____________________________
Ne pas oublier le "réponse acceptée"
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
2 août 2006

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...
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
@+
Julien
____________________________
Ne pas oublier:
- le "réponse acceptée"
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
ZUT de zut ca a foire.

Je te disais, d'executer ton code en Debug.

@+
Julien
____________________________
Ne pas oublier:
- le "réponse acceptée"
</SPA< body>
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
2 août 2006

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

strNom = frmLogin.txtUserName
strMDP = frmLogin.txtPassword

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
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
2 août 2006

Toi ... t'es un bon !
Ecoute ... euh ... j'aimerais que tu t'eloignes pas trop juste au cas où parce que VB et moi c pas encore ca !!
Encore merci.
Messages postés
20
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
2 août 2006

Désolé de reposter mais du poste ou je suis j'arrive pas à valider la réponse , je verrais ca ce soir de chez moi
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,

T'inquietes je risque pas de m'eloigner.

En revanche n'oublie pas le reponse acceptée sur le post qui a pu t'aider.

@+
Julien
____________________________
Ne pas oublier:
- le "réponse acceptée"
</SPA< body>
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Excuse pour le dernier post, ton dernier n'etait pas encore arrive.

Ne prend pas en compte ce que j'ai dit:

aller bonne prog

@+
Julien
____________________________
Ne pas oublier:
- le "réponse acceptée"
</SPA< body>