Bonjour,
Voila j'ai realise un rapport excel executant un certain nombre de requete SQL (via ADO) sur une base SQL Server 2000. Cela fonctionne correctement mais le temps d'execution de la premiere requete est tres tres long.
Voici une partie de mon code, je vous epargne le detail des requete:
Excel met jusqu'a 5 minutes voir des fois s'arrete (Timeout) pour executer la permiere requete puis ensuite l'enchainement des autres requetes se fait rapidement. Mes 3 requetes sont exactement les memes a une condition pres. Les 3 s'executent a la meme vitesse sous SQL server query analyser. Moins de 20 secondes.
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
34
35
36
37
38
39
40
41
42 Set Cn = New ADODB.Connection Cn.Open ConnStr 'Execute 1st query rs.Open SQLStr1, Cn, adOpenStatic ThisWorkbook.Sheets("DCOW").Rows.ClearContents With ThisWorkbook.Sheets("DCOW") With .Cells(1, 1) .CopyFromRecordset rs End With End With rs.Close 'Execute 2nd query rs.Open SQLStr2, Cn, adOpenStatic ThisWorkbook.Sheets("DCOW_TOT").Rows.ClearContents With ThisWorkbook.Sheets("DCOW_TOT") With .Cells(1, 1) .CopyFromRecordset rs End With End With rs.Close 'Execute 3nd query rs.Open SQLStr3, Cn, adOpenStatic ThisWorkbook.Sheets("DCOW_OTBP").Rows.ClearContents With ThisWorkbook.Sheets("DCOW_OTBP") With .Cells(1, 1) .CopyFromRecordset rs End With End With ' Tidy up rs.Close Set rs = Nothing Cn.Close Set Cn = Nothing
Aussi les requetes sont basees sur la selection d'un champs dans une liste deroulante. Si je lance 2 fois de suite ma macro pour le meme champ de la liste deroulante, les requetes s'execute tres rapidement.
En fait c'est a chaque fois que je selection un nouveau champ et que j'execute le process pour la premiere fois, c'est tres tres long.
Est-ce que ca peut etre lie a ADO? Ou ma facon de l'utiliser?
Partager