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

Connexions aux bases de données Oracle Discussion :

D'Excel, se connecter à Oracle avec mot de passe via Access connecté à Oracle


Sujet :

Connexions aux bases de données Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 117
    Points : 44
    Points
    44
    Par défaut D'Excel, se connecter à Oracle avec mot de passe via Access connecté à Oracle
    Bonjour à tous !

    J'ai trouvé quelques exemples qui ressemblaient un peu à ce que je veux faire, mais c'est à chaque fois des cas différents et je suis perdu dans tout ça même si j'ai bien compris qu'il y avait une histoire de macro avec des fonctions DAO.

    Alors voilà, j'aimerais développer quelque chose pour qu'un utilisateur puisse en un clic obtenir un fichier excel (2003).

    Ce fichier Excel doit appeler un fichier mdb (Access 2003) qui lui même fait une liaison sur une Base Oracle.

    Le fichier Access est OK, je l'ai testé en l'appelant manuellement, il fonctionne bien.

    Mon problème c'est savoir comment faire en sorte que ce fichier Excel appelle automatiquement le fichier Access en lui faisant passer les identifiants de connexion (afin que l'utilisateur n'ai pas à les taper par la suite)

    D'après ce que j'ai compris, il y aurait ce code à placer quelque part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim strSQL As String
    Dim db As DAO.Database
    Set db = DAO.OpenDatabase("\\Idw-prod\Liaison.mdb", False, False)
    strSQL = "SELECT * FROM T_INDICES WHERE id_indice < '100';"
    db.Execute strSQL
    Lorsque je fais un appel manuel (fichier, ouvrir le fichier mdb) à cette base Access, Excel ("Microsoft ODBC for Oracle Connect") me demande le nom d'utilisateur, le mot de passe et le domaine. Comment puis-je intégrer ces identifiants dans le code VBA ?

    Auriez-vous vu passer un exemple qui ressemble au miens?

    Merci d'avance à ceux qui essaieront de m'aider !

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Merci pour le lien ce ce document, ça semble correspondre à ce dont j'ai besoin.
    Par contre, je suis un peu perdu et pas très expert en VBA.
    Il y a plusieurs techniques DAO, ODBC, Liaison Access, etc.

    A ton avis, il faut que je parte de quelle option dans mon cas ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    En fait, tout ce que je veux faire, je sais le faire manuellement, en appelant depuis Excel ma table Access, dans laquelle j'ai déjà une requête préparée qui appelle les données sur Oracle.

    Là où je bloque, c'est pour automatiser tout ça, afin qu'un utilisateur ait juste à ouvrir le fichier Excel pour obtenir les données.

    Merci d'avance si quelqu'un connait VBA pour m'indiquer la marche à suivre...

    Aj

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 129
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Salut.

    Puisque ta base Access appelle une base Oracle, pourquoi ne pas appeler directement la base Oracle au départ d'Excel?

    Quoi qu'il en soit, c'est plutôt un problème Oracle, à mon avis, puisque tu vas devoir définir les "User" et "Password" lors de la connexion à Oracle.

    Il faudrait savoir comment te connecter sur une db Oracle en ayant enregistré le mot de passe. Je suppose que via un ODBC ou via une chaine de connexion dans le code, c'est possible de faire cela, mais je passe le relais aux spécialistes Oracle du forum qui pourront te donner la syntaxe d'appel ou la façon de réaliser un odbc sécurisé sur Oracle.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    Oui c'est vrai que ça paraitrait assez logique de faire la requête directement sur Oracle plutôt que de passer par Access.

    Parmi tous les post que je viens de lire, il y a apparemment plusieurs solutions, le problème, c'est que je comprends pas tout là dedans, je suis parti de ce code, qui apparemment ressemblait un peu à ce que je voulais.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Private Sub Form_Load()
    Dim Cnn1 As ADODB.Connection, Cmd1 As ADODB.Command, MonRs As ADODB.Recordset
     
    Set Cnn1 = New ADODB.Connection
    With Cnn1
        .Provider = "Microsoft.Jet.OLEDB.4.0;"
        .ConnectionTimeout = 30
        .Mode = adModeShareExclusive
        .Open "Data Source=P:\Projet\Liaison_oracle.mdb ;User Id=azeaeaze; Password=azeaeaze"
    End With
     
    'par Connection.Execute
     
    'Set MonRs = Cnn1.Execute("SELECT INDLIG1 From G_INDIVIDU where nom ='MARTINOT'", , adCmdText)
    'MonRs.Close
     
    'par command.execute
     
    'Set Cmd1 = New ADODB.Command
    'With Cmd1
    '    .ActiveConnection = Cnn1
    '    .CommandType = adCmdText
    '    .CommandText = "SELECT INDLIG1 From G_INDIVIDU where nom ='MARTINOT'"
    'End With
    'Set MonRs = Cmd1.Execute
    'MonRs.Close
     
    'par recordset.open
     
    Set MonRs = New ADODB.Recordset
    MonRs.Open "SELECT INDLIG1 From G_INDIVIDU where nom ='MARTINOT'", Cnn1, , , adCmdText
    End Sub
    Quand j'exécute, j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Erreur d'exécution 2147217843 (80010108)'
    Erreur automation
    Et là, je sèche. Auriez-vous une idée du problème ?

    Petite question : lorsque je me connecte manuellement (par le menu d'Excel) je rentre le nom d'utilisateur, le mot de passe ainsi que le nom du serveur. Or je vois que dans ma fonction VBA, je ne renseigne pas ce nom de serveur. Je suppose qu'il faudrait le renseigner quelque part, mais où ?

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 129
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Dans le code que tu donnes, tu n'utilises pas Oracle, mais Access.

    Si le mot de passe que tu renseignes concerne Oracle, il ne faut pas le mentionner lors de la connexion Access.

    Si Access récupère des infos de Oracle et a besoin de mot de passe pour se connecter à Oracle, tu ne résous pas ton problème en passant par Access, car il est malaisé, voire impossible, de piloter la saisie du mot de passe dans Access (connexion Oracle) via Excel.

    C'est pourquoi je préconisais de passer directement de Excel à Oracle, pour pouvoir indiquer les userid et password dans la chaine de connexion à Oracle, en VBA.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 117
    Points : 44
    Points
    44
    Par défaut
    Merci Pierre pour tes conseils.

    sur ce lien, j'ai trouvé des tutoriels pour accéder à Oracle directement. Il y a plusieurs solutions

    Alors j'ai essayé celui-ci : Oracle Data Provider for .NET / ODP.NET
    Using ODP.NET without tnsnames.ora

    Code Visual Basic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public cN As ADODB.Connection
    Public rs As ADODB.Recordset
    Public Sub conNect()
        Set cN = New ADODB.Connection
        dbPath = Path
        cN.ConnectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=202.123.177.25)(PORT=17711)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=IMXXP)));User Id=aeazeaz;Password=azeaze;"
        cN.Open
    End Sub
    En exécutant, j'obtiens ce message d'erreur :

    [Microsoft][Gestionnaire de pilotesODBC] Nom de source de données trop long


    et en essayant Oracle Provider for OLE DB
    Oracle XE, VB6 ADO

    Code Visual Basic :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public cN As ADODB.Connection
    Public rs As ADODB.Recordset
    Public Sub conNect()
        Set cN = New ADODB.Connection
        dbPath = Path
        cN.ConnectionString = "Provider=OraOLEDB.Oracle;dbq=212.413.141.144:15211/XE;Database=Mabase;User Id=zerztze;Password=zeztzz;"
        cN.Open
    End Sub
    J'obtiens l'erreur suivante :

    ORA-12560: TNS: Erreur d'adaptateur de protocole


    Il doit y avoir quelque chose qui cloche dans mon code, mais où ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/03/2014, 15h43
  2. connexion avec mot de passe via MS-Dos
    Par Sheriff dans le forum Administration
    Réponses: 2
    Dernier message: 30/03/2008, 18h42
  3. connecter a une base avec mot de passe
    Par torNAdE dans le forum Sécurité
    Réponses: 30
    Dernier message: 02/08/2006, 21h54
  4. [VB.NET] Fichier Excel vérouillé avec mot de passe
    Par rafano dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/06/2004, 15h36

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