Mon code est :
Option Explicit
Dim monctrlmemb As Ctrlmembre
Private Sub cmdannuler_Click()
Txtlog.Text = ""
Txtpwd.Text = ""
End Sub
Private Sub cmdlog_Click()
If Len(Txtlog.Text) < 11 And Len(Txtpwd.Text) < 11 Then
If monctrlmemb.login(Txtlog.Text, Txtpwd.Text) Then
MDIAeroclubmemb.Show
Unload Me
MDIAeroclubmemb.mnumembre.Checked = True
Else
MsgBox "Code erroné ", vbExclamation
End If
Else
MsgBox "le login et le password ne peuvent pas dépassés 10 caractères", vbInformation, "Erreur"
End If
End Sub
et il bloque à la ligne "if monctrlmemb.login(Txtlog.Text...)"
Salut,
Ne sachant pas ce que doit renvoyer "monctrlmemb.login(Txtlog.Text, Txtpwd.Text)", c'est difficile de dire ou est l'erreur
quand c'est du boolean, ca doit fonctionner, il doit renvoyer vrai pour passer a la suite. En principe il doit comparer avec qqe chose.
if ValA > ValB then
if ValA < ValB then
if ValA = ValB then
if VaA then --> fonctionne si c'est du boolean sinon erreur (si je ne me trompe pas)
puis peut etre qu'il y a un "plantage" au niveau du (...,...)
puis le "monctrlmemb" est définit comme "Ctrlmembre", je pense une class, et peut être qu'il faut l'attribuer avec un "Set" (ca l'est peut etre mais on ne le voit pas) et on ne voit pas comment est rempli le "monctrlmemb", est il vide ou pas ? le mieux c'est d'ajouter un espion sans doute.
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 'Monlogin''
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)
Set monlog = 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)
.cpmemb = rst.fields(6)
.dnmemb = rst.fields(7)
.email.memb = rst.fields(8)
.nocptememb = rst.fields(9)
.pwdmemb = rst.fields(10)
.loginmemb = rst.fields(11)
.actifmemb = rst.fields(12)
End With
login = True
End If
End Function
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 'Monlogin''
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)
Set monlog = 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)
.cpmemb = rst.fields(6)
.dnmemb = rst.fields(7)
.email.memb = rst.fields(8)
.nocptememb = rst.fields(9)
.pwdmemb = rst.fields(10)
.loginmemb = rst.fields(11)
.actifmemb = rst.fields(12)
End With
login = True
End If
End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Non car je veux juste controler dans ma base de données si le login et le password du formulaire cad txtlog et txtpwd existe dans ma base de données.
Je pensais que je devais faire monctrlmemb = New Ctrlmembre si c'était une création.
bin je pense que tu as raison pour l'appel de la fonction, perso je ne comprend pas trop ce que veut dire Labout, mais il est vrai que mes connaissances par rapport a labout sont loins d'être à son niveau.
pour le New, je pensais justement qu'il fallait l'affecté au moins une fois en entete par exemple ou dans le form_load pour qu'il soit pris en compte.
en gros, le "dim " pour moi c'etait la creation de la variable et le "set ..new" c'etait la céation de la référence "réelle". mais il est vrai que ca ne fait pas longtemps que j'ai découvert tout ca.
il bloque sur l'appel de la fonction, mais n'est ce pas a l'interieur de la fonction qu'il bloque ?, met des points d'arret succéssif pour voir si c'est au début ou en cours de fonction qu'il bloque.