Requete sur Access a partir d'excel

  • Initiateur de la discussion Stef
  • Date de début
S

Stef

Guest
Bonjour,
je souhaite recuperer des infos de table Access a partir d'un code VBA Excel.
J'ai trouver la solution sur le forum mais il reste un dernier detail : ma base utilise un fichier utilisateur qui la securise par mot de passe....

Comme indiquer ces informations en VBA pour pouvoir entrer dans la base ?

Pour l'instant j'ai ca :

chSQL = "SELECT ...FROM ...blablabla"
Set db = OpenDatabase("MaBase.mdb", dbDriverComplete, False, Connect:=";PWD=password;UID=utilisateur;DSN=MonFichierUser.mdw")

mais je ne suis pas sure d'avoir compris ce que veux dire DSN.
A priori il n'y a pas d'erreur sur cette ligne mais la ligne suivante bloque :

Set rec = db.OpenRecordset(chSQL, dbOpenDynaset)

là, la variable 'err' me dit que je n'est pas acces à la table.

Note: j'ai essayer sur une base non 'securise' cela fonctionne parfaitement

Je continu mes recherches mais si vous avez un indice je vous en remercie.
 
C

chris

Guest
Bonjour
On peut sécuriser Acces avec des fichier pour les groupes users : ça doit être cela.
Tu peux regarder le chapitre sécurité du grenier du site
www.self-access.com
Pour voir les différents niveaux de sécurité et adapter en fonction de ton cas.
Chris
 
S

Stef

Guest
Justement... ma bdd EST securisée avec un fichier .mdw
mais je ne sais pas comment passer a travers lorsque je souhaite acceder a une table a partir du VBA Excel.

Entre temps j'ai trouver ca :
DBEngine.SystemDB = "MonFichierUser.mdw"

qui semble definir le fichier de securite a utilisé... et maintenant j'ai une erreur du genre "Compte ou mot de passe non valide".
je crois avoir fait un pas dans le bon sens.....

A votre bon coeur .N'hesiter pas si vous avez une piste, même petite. ;-)
Merci
 
M

Michel_M

Guest
Bonjour Stef et Chris et le forum

ci desous le code DAO pour l'ouverture d'une base de données sécurisée au niveau de l'utilisateur en utilisant un fichier de groupe de travail nommé "system.mdw"

recopié du document téléchargeable microsoft "Migration de DAO vers ADO: utilisation avec le moteur microsoft jet". Pavé de 132 pages avec le gros avantage d'avoir les procédures DAO et ADO: donc si tu bosses souvent sur ce type d'appli, il rend bien souvent service bien qu'il ne lise pas commze un roman policier et qu'il n'évite pas les prises de tête

Dim wks as DAO.workspace
Dim db as DAO.Database

DBengine.systemDB="C:\program files\microsoft office\office\ system.mdw"

set wks=DNengine.CreateWorkspace("";"admin", "")
set db=wks.opendatabase(".\comptoir.mdb")
....

db.close
wks.close

"admin" étant le nom de l'utilisateur: 'voir aide workspace

Je n'ai pas essayé, donc...

en espérant etc
Michel
 
S

Stef

Guest
Merci Michel_M :)

il m'a semblé au cours de mes recherches que je devait m'orienter vers l'utilisation d'un workspace comme tu me l'indique. J'avais tout juste compris (a peu pres !) comment ca pouvait fonctionner que je suis tomber par hasard sur autre chose qui à marché du premier coup !!!! :

Dim wks as DAO.workspace
Dim db as DAO.Database

DBengine.SystemDB="C:\program files\microsoft office\office\system.mdw"

DBEngine.DefaultUser = "LeUser"
DBEngine.DefaultPassword = "LePass"
Set db = OpenDatabase("I:\Offre\Outils Cotation\Kototo2002.mdb")

db.close
wks.close


Au niveau securité c'est pôa le top ! un petit futé peu venir lire le password dans VBA. Mais ca suffit pour mon appli !

Merci de votre aide.
 
C

chris

Guest
Bonjour
Tu peux toujours bricoler un algo pour que le pass ne soit pas en clair dans le code.
Sur les sites d'astuces internet j'ai trouvé un code javascript pour ça : on doit pouvoir l'adapter en VB.

Sinon protèges au moins ton module par un pass.

Chris
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 325
Membres
103 179
dernier inscrit
BERSEB50