Bonsoir tout le monde,
Je viens vous demander de l'aide car je bloque totalement sur un petit projet pour lequel j'ai été mandaté.
Dans mon projet, j'ai une base de donnée contenant une liste de serveur ainsi que des dates de production de ces serveurs par journée (01.01.2014 - 02.01.2014 - 03.01.2014 - etc.). Tous les serveurs ne fonctionnent pas forcément tous les jours.
Avec une macro excel je dois effectuer des requêtes SQL sur ma base de donnée. Pour celà c'est bon j'arrive à me connecter à ma base de donné et à faire des requêtes sur celle-ci comme par exemple récupérer ma liste de serveur suivant des dates ou encore récupérer ma liste de serveur tout simplement.
J'utilise l'objet recordset.
Maintenant le problème c'est que je dois pouvoir récupérer une liste de serveurs qui ont fonctionné en production entre deux dates (ex : 01.01.2014 et 31.01.2014) et sur cette liste de serveurs je devrai mettre en couleur les serveurs qui n'ont pas fonctionné pendant ou moins 1 jour etc.. Je me dis qu'il faut que je vérifie une date après l'autre pour chacun de ces serveurs donc effectuer une double boucle (une boucle sur les serveurs et une boucle sur les dates). Toutefois je ne vois pas du tout comment faire avec un objet comme recordset. J'ai cherché sur google mon ami si je pouvais trouver un début de solution à mon problème mais sans succès.
Est-ce que l'un d'entre vous à t-il déjà effectuer une double boucle de la sorte avec un object recordset ?
Voici mon code pour plus de précision :
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
43
44
45
46
47
48
49 Option Explicit Sub DataExtract() ' 1) et 2) Create a connection object. ' 3) Provide the connection string. Dim cn As ADODB.Connection Set cn = New ADODB.Connection Dim strConn As String ' Create a recordset object. Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Dim Rowcnt, Fieldcnt As Integer Rowcnt = 2 'Connect to the Pubs database on the local server. A METTRE EN VARIABLE PUBLIC strConn = "PROVIDER=SQLOLEDB;" & _ "Server=SQLEXPRESS;" & _ "Database=Server;" & _ "UserID=id; Password=*****; Trusted_Connection=yes" 'Now open the connection. cn.Open strConn rs.CursorLocation = adUseClient rs.CursorType = adOpenStatic With rs .ActiveConnection = cn .Open "SELECT DISTINCT Serveur FROM test WHERE date BETWEEN '01/01/2014' AND '31/01/2014'" End With While Not rs.EOF For Fieldcnt = 0 To rs.Fields.Count - 1 Cells(Rowcnt, Fieldcnt + 1).Value = _ rs.Fields(Fieldcnt).Value Next Fieldcnt rs.MoveNext Rowcnt = Rowcnt + 1 Wend ' Tidy up rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
Partager