IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Connexion automatique base Oracle sur ouverture formulaire


Sujet :

IHM

  1. #1
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut Connexion automatique base Oracle sur ouverture formulaire
    Bonjour,

    J'ai un formulaire basé sur des tables liées qui viennent d'une base Oracle.
    Lorsque j'ouvre ce formulaire la première fois, il me demande systématiquement le mot de passe.
    Y-t-il une possiblité pour indiqué se mot de passe automatiquement en arrière plan ?
    Je veux que le panneau de demande du mot de passe n'apparaisse pas.

    J'ai essayé de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Private Sub Form_Open(Cancel As Integer)
       Dim rs As ADODB.Recordset
       Dim strConnection As String
     
       strConnection = "ODBC;DSN=XXXX;;UID= XXXXX;PWD= XXXX;"
     
       Set cn = New ADODB.Connection
     
       With cn
          .Properties("Data Source").Value = strConnection
          .Open
       End With
     
       Set rs = Nothing
       Set cn = Nothing
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
       Dim cn As ADODB.Connection
       Set cn = CurrentProject.Connection
       cn.Close
       Set cn = Nothing
    End Sub
    Mais il n'a pas l'air de tenir compte de la nouvelle connexion.

    Faut-il le faire pour tous les tables ?

    Merci pour votre aide,

    LeRico

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut A tester
    Bonjour,

    Access (ou DAO) doit utiliser des connexions ODBC particulières pour les tables liées.
    Comme toi j'ai pu constater qu'établir une connexion via ADO ou DAO (Workspace ODBCdirect) n'a aucun effet.

    J'ai essayé d'exécuter une requête SQL Direct (pour laquelle on fournit une chaîne de connexion ODBC avec UID et PWD) en VBA.
    Cela semble faire ce que tu souhaites.

    Exemple:
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub odbcConnecter()
    Dim db As DAO.Database, strODBCconn As String
    Dim qdef As DAO.QueryDef, strSQL As String
    Dim strUID As String, strPWD As String
    Dim errX As DAO.Error, strErrMsg As String
     
    strUID = "User1"
    strPWD = "123"
     
    On Error GoTo ERRH
     
    ' Réfénce la base de données en cours
    Set db = CurrentDb
    ' Chaîne de connexion ODBC
    strODBCconn = "ODBC;" & "DSN=Mon DSN;" & "Database=MaBDD;" & _
                  "Uid=" & strUID & ";Pwd=" & strPWD
    ' Crée une requête SQL Direct temporaire
    strSQL = "SELECT TOP 1 * FROM fournisseurs"
    Set qdef = db.CreateQueryDef("", strSQL)
    qdef.Connect = strODBCconn
    ' Exécute la requête
    qdef.OpenRecordset
     
    QUIT:
    Set qdef = Nothing
    Set db = Nothing
    Exit Sub
     
    ERRH:
     
    strErrMsg = "Erreur N° " & CStr(Err.Number) & " : " & Err.Description
    Select Case Err.Number
        Case 3146, 3151, 3154, 3155, 3156, 3157, 3231, 3232, 3234, 3225, 3238, 3247, 3254
            strErrMsg = strErrMsg & vbCrLf & vbCrLf & _
               ">>> Erreurs complémentaires DAO :" & vbCrLf & _
               "======================"
            'Récupérations Erreur(s) driver ODBC
            For Each errX In DBEngine.Errors
                strErrMsg = strErrMsg & vbCrLf & Format(errX.Number, "00000") & " : " & errX.Description
            Next
    End Select
     
    MsgBox strErrMsg
    Resume QUIT
     
    End Sub
    Après exécution du code j'ai pû ouvrir ma table liée sans que le pilote ODBC me demande un nom d'utilisateur et un mot de passe.

    A+

  3. #3
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    C'est exactement ce qu'il me fallait

    Merci LedZeppII,

    LeRico

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion simultanée à 2 bases Oracle sur deux serveurs distincts
    Par Herwin78800 dans le forum Accès aux données
    Réponses: 10
    Dernier message: 13/07/2011, 13h55
  2. Réponses: 9
    Dernier message: 17/11/2006, 12h08
  3. Réponses: 4
    Dernier message: 24/02/2006, 11h48
  4. Réponses: 4
    Dernier message: 02/01/2006, 17h58
  5. pb d affichage d un champs sur ouverture formulaire
    Par student007 dans le forum Access
    Réponses: 3
    Dernier message: 16/11/2005, 23h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo