Jam
XLDnaute Accro
Salut à tous,
Bon ça faisait longtemps que j'étais pas venu faire un tour...il fait toujours beau ici ?
Moi c'est un peu gris, la faute à ADO et l'utilisation des paramètres.
Bon, ok, ok, c'est pas 100% pur Excel puisqu'en fait il s'agit d'interroger une base Access, mais c'est pour récupérer des données et les traiter sous Excel.
Bref, description du problème:
1. une base Access
2. une procédure stockée (avec 3 paramètres)
3. les paramètres: un 'champ' texte + 2 'champs' dates
La requête a cette 'gueule' là:
quand à la macro elle a cette tête-là (c'est un peu le bazar vu que je débogue ) :
Si quelqu'un a une petite idée (Michel ?) je suis preneur parce que sur Goog... j'ai pas trouvé grand chose (surtout sur la particularité des dates).
Merci d'avance à tous.
Oula, comme le code a une sale tête, je met en FA le code (fichier txt). [file name=modMain2.zip size=1083]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/modMain2.zip[/file]
Message édité par: jam, à: 16/05/2006 17:21
Bon ça faisait longtemps que j'étais pas venu faire un tour...il fait toujours beau ici ?
Moi c'est un peu gris, la faute à ADO et l'utilisation des paramètres.
Bon, ok, ok, c'est pas 100% pur Excel puisqu'en fait il s'agit d'interroger une base Access, mais c'est pour récupérer des données et les traiter sous Excel.
Bref, description du problème:
1. une base Access
2. une procédure stockée (avec 3 paramètres)
3. les paramètres: un 'champ' texte + 2 'champs' dates
La requête a cette 'gueule' là:
Code:
PARAMETERS sSite Text ( 255 ), dDebut DateTime, dFin DateTime;
SELECT TOP 10 Facturation.Titre, Facturation.Client, Sum(Facturation.[Quantité commandée]) AS Ouvrages, Sum(Facturation.[Montant HT]) AS CA
FROM Facturation
WHERE (((Facturation.Site)=[sSite]) AND ((Facturation.[Date facture])>=[dDebut] And (Facturation.[Date facture])<=[dFin]))
GROUP BY Facturation.Titre, Facturation.Client
ORDER BY Sum(Facturation.[Quantité commandée]) DESC;
quand à la macro elle a cette tête-là (c'est un peu le bazar vu que je débogue ) :
Code:
'# Définition des variables du module
Dim sPath As String '# Chemin général
Dim sConnString As String '# Chaîne de connexion
Const sDatabase As String = 'Facturation.mdb' '# Nom de la bdd (Access)
Sub test()
sPath = 'D:\\KPI\\'
Call GetData('Best10_B', 'IH', '01/04/2006', '30/04/2006', 'bdd_BSB', False)
End Sub
'=================================================================================
'= Récupère les données d'une requête stockée dans une base Access sur le réseau =
'=================================================================================
Sub GetData(sProcName As String, _
sPara1 As String, _
sPara2 As Date, _
sPara3 As Date, _
Optional sName As String, _
Optional bField As Boolean = True)
Dim oCon As ADODB.Connection
Dim oRec As ADODB.Recordset
Dim oCommand As ADODB.Command
Dim oPara1 As ADODB.Parameter
Dim oPara2 As ADODB.Parameter
Dim oPara3 As ADODB.Parameter
'Dim sProcName As String 'Nom de la procédure stockée
Dim i As Integer
Set oCon = New ADODB.Connection
'# Connection à la base
With oCon
.Provider = 'Microsoft.Jet.OLEDB.4.0;'
.ConnectionTimeout = 30
.CursorLocation = adUseClient
.Open 'Data Source=' & sPath & sDatabase
End With
'# Création lancement de la requête
Set oCommand = New ADODB.Command
With oCommand
.CommandType = adCmdStoredProc
.CommandText = sProcName
.ActiveConnection = oCon
End With
'
Set oPara1 = New ADODB.Parameter
With oPara1
.Type = adDate
.Size = 8
.Direction = adParamInput
.Value = sPara2
End With
oCommand.Parameters.Append oPara1
Set oRec = oCommand.Execute
'
'# Récup des entêtes
With oRec
For i = 1 To .Fields.Count
Worksheets('Data').Cells(1, i) = .Fields(i - 1).Name
Next
End With
'# Récup des données + nommage plage
With Feuil4
' .Range('G1') = 'Nb Cahiers'
With .Cells(2, 1)
.CopyFromRecordset oRec
.CurrentRegion.Name = 'Bdd_Tournees'
End With
End With
Feuil4.Activate
oRec.Close
oCon.Close
Set oRec = Nothing
Set oCon = Nothing
Exit Sub
GestionErreur:
End Sub
Si quelqu'un a une petite idée (Michel ?) je suis preneur parce que sur Goog... j'ai pas trouvé grand chose (surtout sur la particularité des dates).
Merci d'avance à tous.
Oula, comme le code a une sale tête, je met en FA le code (fichier txt). [file name=modMain2.zip size=1083]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/modMain2.zip[/file]
Message édité par: jam, à: 16/05/2006 17:21