VBA Login + Password

Résolu
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006 - 4 juil. 2005 à 15:21
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006 - 5 juil. 2005 à 13:49
Bonjour,

voila, je désirais réaliser un UserForm avec un login et un mot de
passe (sousOutlook XP) et un bouton Ok!. J'aimerais que lorsque l'on
entre un login et un mot de passe correct, on accede à "UserForm2".
Pouvez vous me donner un exemple de code ? Pour info, les champs se
trouve sur une table DSN (la connexion à cette table se fait dans un
module OpenSQLServerDB) et les champs requis sont user_login et
user_password (la comparaison de ce qui est tapé dans le txtBox1 et
txtBox2 se fera avec le contenu de ces champs). Merci pour vos réponses.



Dites moi si je n'ai pas été assez clair, j'ajouterais des explications complémentaires.



Merci beaucoup



Fehn

13 réponses

keiko11245 Messages postés 48 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 5 avril 2006
5 juil. 2005 à 11:58
sinon ce que tu peux faire c'est enlever la condition WHERE de la requête et le faire à la main.

Private Sub CommandButton1_Click()
Dim strSQL As String
Dim rstConn As ADODB.Recordset
Dim objmyconn As ADODB.Connection
Dim loginTrouve as Boolean

Set objmyconn = OpenSQLServerDB("dbauser", "dbauser")

Set rstConn = CreateObject("ADODB.RecordSet")

strSQL = "SELECT login, password FROM Users ;"

rstConn.Open strSQL, objmyconn

rstConn.MoveFirst

loginTrouve =False

While rstConn.eof=false And loginTrouve=false

If rstConn.Fields(0) = Me.txtLogin.Value Then
loginTrouve=true
If rstConn.Fields(1)=Me.txtPassword.Value Then
MsgBox "Connexion réussi"
UserForm2.Show
Else
MsgBox "Mot de passe éroné"
End If
Else
loginTrouve=False
End If
Wend

If loginTrouve=False Then
MsgBox "Login incorrect"
End If

rstConn.Close
Set rstConn = Nothing
End Sub

Ah l'informatique c'est bien quant même quand ça marche
3
keiko11245 Messages postés 48 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 5 avril 2006
5 juil. 2005 à 13:33
ha j'ai trouvé pourquoi ça plante outlook, c'est ma faute



dans le code juste avant le Wend il faut que tu mettes rstConn.moveNext

sinon tu lis indéfiniment le même enregistrement et tu ne sorts jamais de la boucle.




Ah l'informatique c'est bien quant même quand ça marche
3
omsylv Messages postés 69 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 15 septembre 2005
4 juil. 2005 à 16:14
Salut,





Malheureusement, je ne peux pas te donner d'exemple de code mais en
attendant que quelqu'un puisse te répondre je peux te donner la marche
à suivre :




Exécuter la requête "Select * from TaTable where
login " & textbox1 &" and password " & textbox2
& ";"





Vérifier que le résultat contiennent au moins 1 résultat. Si c'est le cas :


Form2.load


Form2.show





Sinon msgbox pour avertir d'une erreur
0
keiko11245 Messages postés 48 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 5 avril 2006
4 juil. 2005 à 16:24
Si j'ai compris ce que tu veux faire, il faut comparer le login et le mot de passe saisi avec ce de ta base et si c'est bon tu ouvre un autre formulaire.

Pour ça il faut que tu ajoute à ton bouton OK sur l'évènement Clic une procédure événementielle. Dans cette procédure, tu mettre le code suivant :

dim sql string
dim rs as object

'pour la connexion à la base tu te sert de ton module

'puis tu regarde si le login saisi existe
sql="SELECT user_password FROM DSN WHERE user_login='"+me.txtBox1 .value+"'"

set rs = currentdb.openrecordset(sql)

if rs.eof=true then
'l'utilisateur s'est trompé dans le login
'et tu affiche un message
else
if rs.fields(0)=me.txtBox1.value then
'c'est le bon mot de passe
'tu ouvre alors ton autre formulaire
docmd.openform "UserForm2"
else
'l'utilisateur s'est trompé dans le mot de passe
'et tu affiche un message
end if
end if

rs.close
set rs = nothing

voilà si tu comprend pas une ligne pas de soucis, je t'expliquerai.

PS : je sais pas si ça va marcher du premier coup j'ai fait le code à l'instant.

Ah l'informatique c'est bien quant même quand ça marche
0

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

Posez votre question
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
5 juil. 2005 à 09:09
salut,



Je l'ai introduit dans mon code mais cela ne marche toujours pas. Pourquoi ? voici mon code



Private Sub CommandButton1_Click()

Dim strSQL As String

Dim rs As Object

Dim rstConn As ADODB.Recordset

Dim objmyconn As ADODB.Connection



Set objmyconn = OpenSQLServerDB("dbauser", "dbauser")



Set rstConn = CreateObject("ADODB.RecordSet")



strSQL = "SELECT user_password FROM DSN" & _


"WHERE user_login=" + Me.txtLogin.Value + "'"



Set rs = objmyconn.OpenRecordset(strSQL)



If rs.EOF = True Then

MsgBox "Login incorrect"

Else

If rs.Fields(0) = Me.txtPwd.Value Then

MsgBox "Connexion réussi"

docmd.openform "UserForm2"

Else

MsgBox "Mot de passe éroné"

End If

End If



rs.Close

Set rs = Nothing

End Sub



(OpenSQLServerDB fait appele à une sous routine situé dans le module et qui connecte à la base de donnée :D)



Merci pour vos reponses
0
keiko11245 Messages postés 48 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 5 avril 2006
5 juil. 2005 à 10:20
est ce que tu as essayé d'utiliser ton objet rstConn à la place de rs.

et tu as quoi comme erreur?

Ah l'informatique c'est bien quant même quand ça marche
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
5 juil. 2005 à 10:32
Mon erreur c'est [Microsoft][ODBC SQL Server Driver][SQL Server]Ligne 1 : syntaxe incorrecte vers "="



Je viens de changer rs par rstConn, la même erreur s'affiche.

Et c'est à la ligne rstConn.Open strSQL, objmyconn qui est surligné en jaune
0
keiko11245 Messages postés 48 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 5 avril 2006
5 juil. 2005 à 10:57
heu quelle ligne surlignée?
et est ce que tu es sur que ton programme se connecte correctement à la base?

Ah l'informatique c'est bien quant même quand ça marche
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
5 juil. 2005 à 11:03
Oui oui, c'est sur. D'ailleurs, si je ne met pas la requete "Where" Il
me reconnait si le mot de passe est correct ou non. Je taffiche mon
code mis a jour et je surligne les deux lignes ou s'engendre l'erreur
(la premiere avec la requete Where, et la deuxieme sans)



Private Sub CommandButton1_Click()

Dim strSQL As String

Dim rstConn As ADODB.Recordset

Dim objmyconn As ADODB.Connection



Set objmyconn = OpenSQLServerDB("dbauser", "dbauser")



Set rstConn = CreateObject("ADODB.RecordSet")



strSQL = "SELECT password FROM Users" & _


"WHERE user_login=" & Me.txtLogin.Value & " ;"



rstConn.Open strSQL, objmyconn





If rstConn.EOF = True Then

MsgBox "Login incorrect"

Else

If rstConn.Fields(0) = Me.txtPwd.Value Then

MsgBox "Connexion réussi"

rstConn.Open "UserForm2"

Else

MsgBox "Mot de passe éroné"

End If

End If



rstConn.Close

Set rstConn = Nothing

End Sub
0
keiko11245 Messages postés 48 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 5 avril 2006
5 juil. 2005 à 11:22
pour la premiere erreur :
essaie a tout hasard
set rstConn = objmyconn.execute(strSQL)

pour la deuxieme c'est normal c'est pas sur cetobjet que tu dois faire le open.
sous access c'est Docmd.openform "nom_du_formulaire_a_ouvrir"
mais je sais pas si c'est la même ligne sous

Ah l'informatique c'est bien quant même quand ça marche
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
5 juil. 2005 à 11:29
Pour la premiere erreur, j'ai fais comme tu as dis mais il m'engendre
toujours la même erreur. Je me demande si ce n'est pas du à l'oubli
d'une référence à ouvrir. Je précise que je bosse sous Outlook.



Quand à la 2e j'ai trouvé :D j'utilise la methode UserForm2.Show lol



Par contre la premiere erreur me penalise beaucoup :S
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
5 juil. 2005 à 12:58
Non :S ca passe pas non plus. La Outlook plante carement :'( Personne
n'a une idée pour la requete ? en plus j'en aurais besoin pour la suite
de mon projet



Merci
0
Fehn Messages postés 41 Date d'inscription lundi 20 juin 2005 Statut Membre Dernière intervention 23 février 2006
5 juil. 2005 à 13:49
Merci beaucoup beaucoup beaucoup :D ca marche :D:D:D je vais pouvoir continuer mon projet.
0
Rejoignez-nous