Ouverture Base Access Sécurisé par le code

Résolu
cs_CammCamm Messages postés 3 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 2 août 2005 - 29 juil. 2005 à 17:07
cs_CammCamm Messages postés 3 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 2 août 2005 - 2 août 2005 à 14:26
Bonjour,

J'aurai voulu ouvrir une base Access (non-sécurisé) sur mon poste local avec le système de sécurité d'une base Access en réseaux en lui passant le nom de l'utilisateur et le mot de passe pour que la connexion se fasse automatiquement.

Pour le moment je lance le raccourci suivant :
C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE "C:\MaBaseLocale.mdb" /WRKGRP "S:\MaBaseReseaux.mdw"

J'ai le ID et le mot de passe mais je dois le saisir à la main. Est-il possible de les passer en paramètre afin de simplifier l'utiliastion ?

Merci d'avance

CammCamm

5 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
30 juil. 2005 à 02:40
tu peux peut-être stocker les paramètres de chaque client dans un fichier texte?!
première éxécution, fichier vide ou inexistant, form de paramétrage.
ensuite, fichier non vide, ton appli lit les params et se connecte en conséquence...
PCPT
3
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 9
30 juil. 2005 à 06:05
Salut,


Tu peux faire avec un fichier texte ou un fichier INI




<hr size="2" width="100%">Private Declare
Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As
String, ByVal nSize As Long, ByVal lpFileName As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As
Long



Function LireINI(Entete As String, Variable As String) As String

Dim Retour As String

Dim fichier As String

fichier = App.path & "" & App.EXEName & ".ini"

Retour = String(255, Chr(0))

LireINI = Left$(Retour, GetPrivateProfileString(Entete, ByVal Variable, "", Retour, Len(Retour), fichier))

End Function

Function EcrireINI(Entete As String, Variable As String, valeur As String) As String

Dim fichier As String

fichier = App.path & "" & App.EXEName & ".ini"

EcrireINI = WritePrivateProfileString(Entete, Variable, valeur, fichier)

End Function


<hr size="2" width="100%">



Sinon tu peux Sauver/Lire dans la base des registres #26892
qui a l'avantage d'être moins facil à trouver... puisque je suppose que
si y'a un mot de passe sur la base, c'est pour sécuriser ...




++

Zlub
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
2 août 2005 à 12:17
tes chemins XgJet contiennent le chemin complet? (à partir du drive)

essaye, juste pour test, de ne lancer que :

XgAppMainId = Shell(XgAccessPath, AppWinStyle.NormalFocus)
'ou VbNormalFocus

si çà fonctionne, le problème vient alors sans doute du raccourci

PCPT
(pense à valider si résolu)
3
cs_CammCamm Messages postés 3 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 2 août 2005
2 août 2005 à 10:45
Rebonjour,

Merci pour votre aide et en combinant vos réponses j'ai créer un fichier user.ini qui sera lu par l'application Access puis je lance directement ACCESS via un raccourci contenant le USER et le PWD de la base :

'------------------------------------------------------------------------------------------

' Write Ini File For user application parametres
'------------------------------------------------------------------------------------------
Call P_UserIniFile(XgIniUserFile)

'-----------------------------------------------------------------------------------------
' Execute Access application
'-----------------------------------------------------------------------------------------
Me.UI_InfoTxt.Text = "Executing Access Application"
Application.DoEvents()
XgStr = XgAccessPath & " " & XgJetLocPath & "/USER " & XId_User & " /PWD " & XPwd_User & " /WRKGRP " & XgJetNetSysPath
XgAppMainId = Shell(XgStr, AppWinStyle.NormalFocus)
Application.Exit()

Avec :
XgAccessPath : le chemin vers Access : C:\PROGRA~1\MICROS~2\OFFICE11
\MSACCESS.EXE pour Windows XP
XgJetLocPath : le chemin vers ma base Locale non-sécurisée (.mdb)
XgJetNetSysPath : le chemin vers ma base Reseaux sécurisé (.mdw)

Par contre, ca doit fonctionner sur XP et NT mais malheureusement ce Shell ne marche pas sous XP à moins que ca ne soit du à la version d'Access qui n'arrive pas à le lire.

Si vous avez une idée du problème ??

Tchao

CammCamm
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CammCamm Messages postés 3 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 2 août 2005
2 août 2005 à 14:26
J'ai créer une fonction me construisant correctement le raccouci fonctionnant avec toutes les versions d'Access...

Public
Function F_AccessShellFmt() As
String
Dim XStr As
String
XStr = Chr(34) & XgAccessPath & Chr(34) & " "
XStr &= Chr(34) & XgJetLocPath & Chr(34)
XStr &= " /user " & XId_User & " /pwd " & XPwd_User & " /WRKGRP "
XStr &= Chr(34) & XgJetNetSysPath & Chr(34)
Return XStr
End Function

merci de votre aide.....

CammCamm
0