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 :
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...
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
Toute suggestion sera bienvenue !
Partager