GROUP By - Format Date - Du SQL au VBA

Fermé
Bastien06 Messages postés 8 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 12 août 2010 - 25 mars 2010 à 17:44
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 - 25 mars 2010 à 17:54
Bonjour,

Je vous écris pour demander de l'aide sur VBA sous ACCESS(02)

je suis en train de bosser sur un formulaire Access qui vient taper dans une Requête
J'ai deux zoneListe représentant des Portefeuilles et des marchés, et deux zone de texte avec les dates. Tout ca me permet de regrouper les infos que je veux et de les afficher dans un sous formulaire.

Mon problème vient de mon Select Case qui me permet, à partir d'un group d'option, de regrouper les données par Jour, semaine, mois ou année.

j'ai l'erreur suivante qui arrive:

""Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'Portefeuille' comme une partie de la fonction d'agrégat"

j'ai mis mon code ci dessous.

Merci beaucoup pour votre aide

Cordialement,

Bastien


Langage: Visual Basic


Dim vZoneListe1 As String
Dim vZoneListe2 As String
strSQL = "SELECT * FROM [Recap Deals] "
Étiquette9.Caption = strSQL
 
strSQLDateDébut = ""
strSQLDateFin = ""
 
'Sur Book et Marché
'Si les Champs Book et Marchés sont renseignés, alors
If Me.ZoneListe1 <> "" Then vZoneListe1 = Me.ZoneListe1
If Me.ZoneListe2 <> "" Then vZoneListe2 = Me.ZoneListe2
 
    'On retourne les valeurs filtrées
    strSQL = "SELECT [Portefeuille], [Marché], [Ss - Jacent], [SommedeNb Opé], [SommedeNombre de lot], [Date Opération]" _
    & " FROM [Recap Deals]" _
    & " WHERE ([Portefeuille] Like '" & vZoneListe1 & "* " _
    & " And [Marché] like '" & vZoneListe2 & "*)"
 
 
'Sur le Groupe d'option Time Period
Select Case Me.ChoixTimePeriod
 
Case Is = 1 'regroupement par jour / Date
strSQLTimePeriod = " GROUP BY format([Date Opération],'jj')"
 
Case Is = 2 'regroupement par semaine
strSQLTimePeriod = " GROUP BY format([Date Opération],'ee-yyyy')"
 
Case Is = 3 'regroupement par mois
strSQLTimePeriod = " GROUP BY format([Date Opération],'mm-yyyy')"
 
Case Else 'regroupement par année
strSQLTimePeriod = " GROUP BY format([Date Opération],'yyyy')"
 
End Select
 
 
'Sur Date Début
If TxtDateDébut <> "" Then
    strSQLDateDébut = " AND ([Date Opération]>=" & DateAuFormatUS(Me.TxtDateDébut) & ")"
    'Else
    'strSQLDateDébut = " WHERE ([Date Opération]>=" & DateAuFormatUS(Me.TxtDateDébut) & ")"
End If
 
 
'Sur Date Fin
If TxtDateFin <> "" Then
    If TxtDateFin >= TxtDateDébut Then
        If strSQLDateDébut <> "" Then
            strSQLDateFin = " AND ([Date Opération]<=" & DateAuFormatUS(Me.TxtDateFin) & ")"
        Else
            strSQLDateFin = " WHERE ([Date Opération]<=" & DateAuFormatUS(Me.TxtDateFin) & ")"
        End If
    Else
    MsgBox ("La Date de fin ne peut pas être inférieure à la date de début")
    Me.TxtDateFin.Value = Me.TxtDateDébut.Value
    End If
End If
 
'Rassemblement des variables pour constituer le SQL
strSQL = strSQL & strSQLTimePeriod & strSQLDateDébut & strSQLDateFin
 
'MsgBox strSQL
 
Me.SF_Recap.Form.RecordSource = strSQL



A voir également:

1 réponse

blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
25 mars 2010 à 17:54
Salut,

c'est diaboliquement simple, mais très ch.... à corriger.

Quand tu mets un GROUP BY format([Date Opération],'jj' il faut que format([Date Opération],'jj' soit dans ton select...

De plus, un group by doit avoir un prédicat : sum, count... et ici ce n'est pas le cas...
0