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

Macros et VBA Excel Discussion :

Requeter ORACLE sans passer par un fichier .dqy


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Points : 36
    Points
    36
    Par défaut Requeter ORACLE sans passer par un fichier .dqy
    Hello !

    Je développe actuellement une macro qui se connecte à une base Oracle. La macro doit être utilisable sur plusieurs postes, avec chacun un client Oracle 9i identique.

    Ma connexion marche bien tant que je ne requête qu'une seule table, mais dès qu'il y a des jointures entre les tables, comme Excel n'arrive pas à repérer les liaisons entre les tables je suis contraint de passer par MS Query, qui génère un fichier .dqy.

    Comment puis-je contourner ce problème ?? Il faudrait soit éliminer totalement le besoin de ce fichier .dqy (comment ?), ou sinon l'intégrer directement dans le code (mais alors, comment y faire référence ? Où l'intégrer ??).

    Voici ma fonction de connexion :
    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
    Function ODBCConnect(monSQL As String)
     
    ' Connexion paramétrée pour la récupération de données, en utilisant les paramètes ci-dessus.
     
    With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=" & MonDNS & ";UID=" & MonUID & ";PWD=" & MonPW & _
            ";SERVER=" & MonServeur & ";", Destination:=Range("A1"))
        .CommandText = monSQL
        .Name = "CISCOM_DEV1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceConnectionFile = _
            "D:\Mes Documents\Lancer la requête à partir de CISCOM_DEV1.dqy.dsn"
        .Refresh BackgroundQuery:=False
    End With
     
    End Function
    J'ai besoin de me passer du paramètre de SourceConnectionFile, qui renvoie vers un fichier (tout pourri soit dit en passant, parce qu'il ne fait que recopier la requête !), ou d'éviter qu'il renvoie vers un fichier...

    Toute suggestion sera bienvenue !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Personne ??

    J'ai refait mes requêtes, les ai testées sous SQL*Plus et elles fonctionnement à merveille, mais dès que je lance la macro je dois à chaque requête, sélectionner le driver ODBC. Comment en sélectionner un une fois pour toutes, par le code de préférence ??

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Points : 36
    Points
    36
    Par défaut
    Il me manquait ça dans ma connectionString :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DRIVER{Microsoft ODBC for Oracle}
    pour arriver à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With ActiveSheet.QueryTables.Add(Connection:="ODBC;DRIVER={Microsoft ODBC for Oracle};DSN=" & MonDNS & ";UID=" & MonUID & ";PWD=" & MonPW & _
            ";SERVER=" & MonServeur & ";", Destination:=Range("A1"))
        .CommandText = monSQL
        .Name = "CISCOM_DEV1"
    ...gna gna gna
        .Refresh BackgroundQuery:=False
    End With

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

Discussions similaires

  1. execution de requete sans passer par un fichier sql
    Par funboard dans le forum Oracle
    Réponses: 5
    Dernier message: 11/12/2007, 10h31
  2. Réponses: 4
    Dernier message: 21/11/2007, 13h25
  3. Réponses: 8
    Dernier message: 15/04/2007, 13h14
  4. Requeter Mysql sans passer par du sql -xml?-
    Par Malone dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/08/2006, 14h02
  5. Requeter Mysql sans passer par du sql -xml?-
    Par Malone dans le forum Delphi
    Réponses: 2
    Dernier message: 22/08/2006, 14h02

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