VBA Login + Password [Résolu]

Fehn 41 Messages postés lundi 20 juin 2005Date d'inscription 23 février 2006 Dernière intervention - 4 juil. 2005 à 15:21 - Dernière réponse : Fehn 41 Messages postés lundi 20 juin 2005Date d'inscription 23 février 2006 Dernière intervention
- 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
Afficher la suite 

13 réponses

keiko11245 48 Messages postés lundi 1 septembre 2003Date d'inscription 5 avril 2006 Dernière intervention - 5 juil. 2005 à 11:58
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
keiko11245 48 Messages postés lundi 1 septembre 2003Date d'inscription 5 avril 2006 Dernière intervention - 5 juil. 2005 à 13:33
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
omsylv 69 Messages postés lundi 3 janvier 2005Date d'inscription 15 septembre 2005 Dernière intervention - 4 juil. 2005 à 16:14
0
Utile
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
keiko11245 48 Messages postés lundi 1 septembre 2003Date d'inscription 5 avril 2006 Dernière intervention - 4 juil. 2005 à 16:24
0
Utile
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
Fehn 41 Messages postés lundi 20 juin 2005Date d'inscription 23 février 2006 Dernière intervention - 5 juil. 2005 à 09:09
0
Utile
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
keiko11245 48 Messages postés lundi 1 septembre 2003Date d'inscription 5 avril 2006 Dernière intervention - 5 juil. 2005 à 10:20
0
Utile
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
Fehn 41 Messages postés lundi 20 juin 2005Date d'inscription 23 février 2006 Dernière intervention - 5 juil. 2005 à 10:32
0
Utile
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
keiko11245 48 Messages postés lundi 1 septembre 2003Date d'inscription 5 avril 2006 Dernière intervention - 5 juil. 2005 à 10:57
0
Utile
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
Fehn 41 Messages postés lundi 20 juin 2005Date d'inscription 23 février 2006 Dernière intervention - 5 juil. 2005 à 11:03
0
Utile
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
keiko11245 48 Messages postés lundi 1 septembre 2003Date d'inscription 5 avril 2006 Dernière intervention - 5 juil. 2005 à 11:22
0
Utile
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
Fehn 41 Messages postés lundi 20 juin 2005Date d'inscription 23 février 2006 Dernière intervention - 5 juil. 2005 à 11:29
0
Utile
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
Fehn 41 Messages postés lundi 20 juin 2005Date d'inscription 23 février 2006 Dernière intervention - 5 juil. 2005 à 12:58
0
Utile
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
Fehn 41 Messages postés lundi 20 juin 2005Date d'inscription 23 février 2006 Dernière intervention - 5 juil. 2005 à 13:49
0
Utile
Merci beaucoup beaucoup beaucoup :D ca marche :D:D:D je vais pouvoir continuer mon projet.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.