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.
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.