VB6, Fichier DSN et base de données access Protégé par mot de passe [Résolu]

- - Dernière réponse : cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 25 avril 2013 à 00:20
Bonjour à tous,
je developpe une application de gestion de budget en vb6.
j'ai un fichier DSN + Access 2003 avec mot de passe

voici le fichier dsn:
[ODBC]
DRIVER=Driver do Microsoft Access (*.mdb)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=C:\sophos
DBQ=C:\sophos\Sophos.mdb


et voici mon code source :
Set ado = New ADODB.Recordset
ado.CursorLocation = adUseClient
ado.Open "select * from T_Users where Login='" + txtLogin.Text + "' and password='" + txtPassword.Text + "'", "File Name=C:\sophos\Sophos.mdb.dsn", adOpenKeyset, adLockOptimistic
If ado.RecordCount > 0 Then
strPraticien = ado("CodePraticien")
strUniteMedicale = ado("CodeUniteMedicale")
MenuGeneral.Show
Unload Me
Else
MsgBox "Identification incorrecte.Veuillez reprendre ", vbInformation, "Identification"
txtpasswd.Text = ""
txtpasswd.SetFocus
End If

et quand je me connecte, voici le message d'erreur: {Mot de passe non valide}

avez vous une idée de l'utilisation d'un fichier DSN avec une base de données protégée ?

Merci
Afficher la suite 

3 réponses

Meilleure réponse
3
Merci
Bonjour,
j'ai résolu mon Pb en ajoutant simplement PWD=monMotDePasse dans le fichier DSN

take a look:
[ODBC]
DRIVER=Driver do Microsoft Access (*.mdb)
UID=admin
PWD=MyPasswdRightNow
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=C:\sophos
DBQ=C:\sophos\Sophos.mdb

Avec le meme code :
Set ado = New ADODB.Recordset
ado.CursorLocation = adUseClient
ado.Open "select * from T_Users where Login='" + txtLogin.Text + "' and Password='" + txtPassword.Text + "'", "File Name=C:\sophos\MyFile.dsn", adOpenKeyset, adLockOptimistic
If ado.RecordCount > 0 Then
Menu.Show
Unload Me
Else
MsgBox "Identification incorrecte.Veuillez reprendre ", vbInformation, "Identification"
txtpasswd.Text = ""
txtpasswd.SetFocus
End If



MERCI QUAND MEME

Dire « Merci » 3

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

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

Commenter la réponse de ldjibox
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Bonjour,
Comment peux-tu espérer ouvrir ta base sans lui donner le mot de passe ?
Et cela doit nécessairement se faire avant la requête !
Genre ;
Dim ado As ADODB.Connection
Dim rst As ADODB.Recordset

'Instanciation des variables
Set ado = New ADODB.Connection
Set rst = New ADODB.Recordset

'Connexion à ta base de données
ado.ConnectionString = "Provider=" & nom_PiloteDaccesAlaBaseDeDonnées & ";DSN=" & Nom_DSN & ";UID=" & Nom_Utilisateur & ";PWD=" & MotDePasse & ";"
ado.Open
ce ne sera qu'ensuite, que tu pourras faire une requête sur une table de cette base pour établir un recordset .
Cela va tellement de soi.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
0
Merci
Salut

En fait, ton erreur vient du fait que tu questionnes la DB avant de l'avoir ouverte.
Normalement, on crée un objet Connection que l'on connecte; c'est là que le mot de passe intervient.
Puis, une fois la connexion ouverte, tu peux faire la requète en remplaçant le nom du fichier dsn que tu as mis, par l'objet de connexion.

Même si certaines instructions permettent ces raccourcis, il est plus facile de décomposer pour facilité la maintenance/débogage

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
Commenter la réponse de cs_Jack