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
14010
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 

Votre réponse

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

Merci ldjibox 3

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

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de ldjibox
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
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
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
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

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.