Requète dynamique SQL Access

  • Initiateur de la discussion Ashaar
  • Date de début
A

Ashaar

Guest
Bonjour le fofo,
J'ai un tracas depuis qq mois que je n'arrive toujours pas à résoudre.

Je lance une requète SQL via les liens ODBC d'access sur certaines Tables d'un serveur afin de récupérer directement le résultat dans Excel.

Code ci-dessous :

Sub Extr_dynamique()
SeRVR = Range('H2') 'Serveur
Dbse = Range('H3') 'Database
DN = Range('H1') 'DSN

With ActiveSheet.QueryTables.Add(Connection:='ODBC;DSN=' & DN & ';SRVR=' & SeRVR & ';DB=' & Dbse & ';UID=Ashaar;', Destination:=Range('A1'))
.Sql = Array('SELECT.... FROM... WHERE...(bref le code sql)...')
.Refresh
End With
End Sub

Pas de soucis de ce coté la, ça fonctionne.

Seulement, moi je voudrait faire une requête sur plusieurs Serveurs en même temps et la ça coince.

Par exemple, dans Access, si je lies 2 tables sur 2 serveurs différents, je peux faire une requète qui combine ces 2 tables et donc renvoyer un résultat.

Dans ce cas, le code VB pour exploiter les liens existants serait le suivant :

Sub ExtAccessBase()
Dim bdd As Database
Dim req As QueryDef
Dim enr As Recordset
Dim Sql As String
'Emplacement et nom de la database concernée
Set bdd = Workspaces(0).OpenDatabase('C:\\Ashaar.mdb')
'********* DEBUT DU CODE SQL (Sql comme variable) *****
Sql = ' CODE SQL'
'********************** FIN DU CODE SQL ***************
Set enr = bdd.OpenRecordset(Sql)
numberOfRows = Cells(4, 1).CopyFromRecordset(enr)
enr.Close
bdd.Close
End Sub


Et bien je voudrait faire la même chose directement sans passer par une mdb existante.

Des idées sur l'éventuelle façon de faire ça ?

Merci.
 

Jam

XLDnaute Accro
Re:Requète dynamiqueExcel / SQL / ODBC

Salut Ashaar,

J'ai pas la soluce, mais juste quelques pistes à te proposer.

1. Il me semble que tu peux effectuer des requêtes sur un recordset. Cela te permettrait de ne pas lier les tables dans un MDB.

2. Tu peux aussi passer par des tables temporaires et/ou créer ta base via code.

Tout ça reste à explore.
J'vais jeter un coup d'oeil de mon côté pour voir si y'a quelque chose qui existe.

@+
 
A

Ashaar

Guest
Re:Requète dynamiqueExcel / SQL / ODBC

Bonjour MrExcel
Merci pour ta réponse,

Je sais faire tout ça.

En fait c'est le coté purement dynamique qui m'interesse à présent.

J'essaye de réussir à ne pas m'encombrer avec des créations de tables, requètes, mdb, chemin d'acces, répertoires, etc.. mais juste à ouvrir plusieures lien Odbc simultanément (via Excel bien sur :) ) pour lancer une requète sql multi serveurs.
 

Jam

XLDnaute Accro
Re:Requète dynamiqueExcel / SQL / ODBC

Autre chose,

Ne peux tu pas créer une table mdb unique, dans laquelle tu lies toutes les tables qui t'intéressent.
Les liens étant dynamiques, une seule MDB requêtée te donne la réponse de tout tes autres fichiers.

Mais je n'ai peut-être pas bien compris ton sens de dynamique.
 

Statistiques des forums

Discussions
312 556
Messages
2 089 588
Membres
104 215
dernier inscrit
Jean Michl