GROUP By - Format Date - Du SQL au VBA

Bastien06 Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
blux Messages postés 27141 Date d'inscription   Statut Modérateur Dernière intervention   -
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 27141 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
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