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

Résolu
ldjibox - 24 avril 2013 à 11:29
cs_Jack Messages postés 14006 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

3 réponses

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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 avril 2013 à 11:40
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.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 avril 2013 à 00:20
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)
0
Rejoignez-nous