Question sur les classes

cs_lea75 Messages postés 54 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 28 août 2004 - 6 août 2004 à 16:52
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 6 août 2004 à 23:22
Bonjour à tous,
Quand je me logge ,J'ai sauvé dans une classe "Ctrlmembre" tous les renseignements sur mon user.
Voici ma classe "Ctrlmembre" :
Option Explicit
Dim monctrldb As New ctrldb

'Function qui va contrôler si le login et le password encodé par l'utilisateur'
'le formulaire frmlog sont corrects et si c'est le cas sauvera tous les info '
'concernant le membre loggé dans 'Monlog''
Public Function login(log As String, pass As String) As Boolean

Dim req As String
Dim rst As Recordset
Dim rst2 As Recordset
req "select * from vmembre where login_memb '" & log & "' and pwd_memb = '" & pass & "'"
Set rst = monctrldb.exec_requete(req)
If rst.EOF Then
login = False
Else
Set rst2 = monctrldb.exec_requete(req)
Dim monlog As New Clslog
With monlog
.idmemb = rst.Fields(0)
.nommemb = rst.Fields(1)
.prenommemb = rst.Fields(2)
.ruememb = rst.Fields(3)
.noruememb = rst.Fields(4)
.localitememb = rst.Fields(5)
.cpostalmemb = rst.Fields(6)
.dnaissancememb = rst.Fields(7)
.emailmemb = rst.Fields(8)
.nocomptememb = rst.Fields(9)
.pwdmemb = rst.Fields(10)
.logmemb = rst.Fields(11)
.actifmemb = rst.Fields(12)
End With
login = True
End If
End Function

Mais une fois qu'il est loggé, j'arrive dans un menu et lorsque l'utilisateur clique sur n'importe quelle page du menu,ici c'est un formulaire réservations, j'aimerais afficher directement son nom et son prénom vue que je les ai sauvé dans ma classe "Ctrlmembre".
Voici mon formulaire où j'aimerais charger mon nom et mon prenom directement.

Option Explicit
Dim monlog As New Clslog
Private Sub Form_Load()
txtnom.text = monlog.nommemb
txtprenom.Text = monlog.prenommemb
end sub

9 réponses

cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
6 août 2004 à 17:17
salut,
A mon avis, (mais je ne vois pas trop ou ca plante), Monlog devrait etre declaré en public dans un module pour qu'il soit récupérable dans n'importe quelle form, là il a l'air d'etre actif uniquement dans un form qui se charge, mais il ne peut pas récuperer les info d'un autre form d'ou elles ont été mémoriser.

Bonne prog, poele_a_frire@hotmail.com
liquide
0
cs_lea75 Messages postés 54 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 28 août 2004
6 août 2004 à 17:26
Je vais essayer
Merci
0
cs_lea75 Messages postés 54 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 28 août 2004
6 août 2004 à 17:38
J'ai mis dans un module appellé Mdlmembre :
Option Explicit
Public monlog As New Clslog
Mais il ne m'affiche tjs pas de nom ni de prenom sauvé dans monlog.
Est-ce que je dois changer autre chose?
Merci Lea
0
cs_liquide Messages postés 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 juin 2008
6 août 2004 à 17:53
Bin en fait (mais j'ai un doute), si tu as laissé dans ta function :
Dim monlog As New Clslog
et que tu l'as aussi en public, je pense que ca ne fonctionnera pas.
ensuite dans la form qui se charge a l'execution je mettrais une référence :

set monlog = new Clslog' je pense que la référence pour qu'il sauvegarde est nécéssaire.

Bonne prog, poele_a_frire@hotmail.com
liquide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lea75 Messages postés 54 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 28 août 2004
6 août 2004 à 20:44
En fait j'ai essayé d'utiliser un autre bouton dans mon formulaire
et même mon bouton de cmde annuler où je vide mes champs ne fonctionnent pas.
J'ai fait une feuille MDI et j'ai une feuille Child comme ceci:
Option Explicit
Dim myctrldb As New ctrldb
Dim monctrlreservation As Ctrlreservation
Dim monctrlmemb As Ctrlmembre

Private Sub cmdannuler_Click()
txtdestination.Text = ""
cboddp.Text = Format(Day(Now), "00")
cboddp2.Text = Format(Month(Now), "00")
cboddp3.Text = Format(Year(Now), "0000")
cbodrp.Text = Format(Day(Now), "00")
cbodrp2.Text = Format(Month(Now), "00")
cbodrp3.Text = Format(Year(Now), "0000")
cboimavion.Text = ""
txtnom.Text = monlog.nommemb
txtprenom.Text = ""
cbohr1.Text = "Heures"
cbohr2.Text = "Minutes"
cbohd1.Text = "Heures"
cbohd2.Text = "Minutes"
cbotypevol.Text = ""
cbonominstructeur.Text = ""
End Sub

Private Sub cmdenr_Click()
Set monctrlreservation = New Ctrlreservation
monctrlreservation.insertion (txtnom.Text ,txtprenom.Text ,txt
End Sub

Private Sub cmdmenu_Click()
frmAeroclubmemb.Show
Frmchild.Hide
End Sub
Private Sub Form_Load()


charger_cboimavion
charger_cbonominstructeur
charger_cbotypevol
charger_cbohr1
charger_cbohr2
charger_cbohd1
charger_cbohd2
charger_cboddp
cboddp = Format(Day(Now), "00")
cboddp2 = Format(Month(Now), "00")
cboddp3 = Format(Year(Now), "0000")
cbodrp = Format(Day(Now), "00")
cbodrp2 = Format(Month(Now), "00")
cbodrp3 = Format(Year(Now), "0000")
End Sub
Private Sub charger_cboimavion()
Dim rs As Recordset
Set rs = myctrldb.exec_requete("select * from aeronefs ")
cboimavion.Clear
Do While Not rs.EOF
cboimavion.AddItem rs!id_aeronef
rs.MoveNext
Loop
End Sub
Private Sub charger_cbonominstructeur()
Dim rs As Recordset
Set rs = myctrldb.exec_requete("select * from instructeurs order by id_instructeur")
cbonominstructeur.Clear
Do While Not rs.EOF
cbonominstructeur.AddItem rs!nominstructeur
rs.MoveNext
Loop
End Sub

Private Sub charger_cbotypevol()
Dim rs As Recordset
Set rs = myctrldb.exec_requete("select * from type_vol order by id_typevol")
cbotypevol.Clear
Do While Not rs.EOF
cbotypevol.AddItem rs!denominationtype
rs.MoveNext
Loop
End Sub

Private Sub charger_cbohr1()
Dim i As Integer
cbohr1.Clear
For i = 7 To 22 Step 1
cbohr1.AddItem Format(i, "00")
Next
End Sub
Private Sub charger_cbohr2()
Dim i As Integer
cbohr2.Clear
For i = 0 To 59 Step 1
cbohr2.AddItem Format(i, "00")
Next
End Sub
Private Sub charger_cbohd1()
Dim i As Integer
cbohd1.Clear
For i = 7 To 22 Step 1
cbohd1.AddItem Format(i, "00")
Next
End Sub
Private Sub charger_cbohd2()
Dim i As Integer
cbohd2.Clear
For i = 0 To 59 Step 1
cbohd2.AddItem Format(i, "00")
Next
End Sub
Private Sub charger_cboddp()
Dim i As Integer
cboddp.Clear
For i = 1 To 31 Step 1
cboddp.AddItem Format(i, "00")
Next
End Sub

Et j'ai juste mis dans le spropriétés "True" à MDIchild.
Je pense que je ne dois rien mettre d'autre?
0
cs_lea75 Messages postés 54 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 28 août 2004
6 août 2004 à 21:04
Mon bouton annuler fonctionne mais comment pourrais-je voir ce que monlog.nommemb contient?
Si je ne mets pas set monlog = new clslog dans Private Ssub form_load() il me mets "erreur d'éxecution 91".
Help me!!!
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
6 août 2004 à 22:24
Il va vous falloir un petit cours sur la POO je crois !
Set monLog = New clsLog est effectivement obligatire avant de pouvoir faire quoi que ce soit avec monLog, si tu l'as déclaré ainsi : Private MonLog as clsLog (ou public d'ailleur, cela ne change rien pour le sujet qui nous concerne pouir le moment)
En effet, la déclaration "Private MonLog As clsLog" indique que Monlog est du type objet clsLog, mais ne crée pas d'instance (mot important en POO) de type clsLog pour MonLog. Ca dit juste que monLog sera de ce type, cela réserve la mémoire pour stocker un tel objet, mais ca ne rempli pas cette mémoire avec ce qu'il faut, d'ou l'err 91.
Pour créer une instance, il faut donc ajouter un "Set monLog = New clsLog", ce qui aura pour résultat d'instancier (verbe à retenir) l'objet monLog, de mettre dans la zone mémoire qui lui a été réservé, ce qu'il faut pour que ca fonctionne.
Une autre solution est de créer l'instance de ton objet au moment de la déclaration. Il faut alors écrire ceci au moment de ta déclaration : "Private monLog As New clsLog"
1er cas : création d'une instance tardive
2eme cas : Création d'un instance directe, ou immédiate
Il y a des différence entre les deux type d'instanciation, mais on ferait un chapitre de bouquin sur le sujet, alors je n'en dirais pas plus içi.
Bien ! après ce petit cours de POO, je pense que à la base, ton pb vient d'un souci de visibilité de variable. tente de bien déméler les Private, les Public, les Dim, dasn des procédure/fonctions ou au niveau module et tu devrais pouvoir corriger ton pb

Christophe R.
0
cs_lea75 Messages postés 54 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 28 août 2004
6 août 2004 à 23:17
Merci pour ta réponse.
Je suis un peu perdue avec toutes ses variables.
Connais-tu un site sur un cours en POO ?

Lea
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
6 août 2004 à 23:22
Non malheureusement ! J'ai eu la chance d'apprendre la POO durant mes études, alors je n'ai jamais eu a chercher de sites ou de tutor sur le sujet ...
En tout cas, si tu as besoin de tuyau, ... n'hésite pas.

Christophe R.
0
Rejoignez-nous