'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 & "%')" '### Avec l'opérateur Like sous SQL, il faut utiliser % et pas * '### Le champ Marché comportant un caractère spécifique à la langue, je te conseille ' vivement de l'encadrer avec des [ et ] '### Les strSQLDateDébut et strSQLDateFin étant associés au GROUP BY, il serait plus ' logique de les placer après les lignes traitant le GROUP BY ' (plus facile à comprendre quand, comme nous, on reprend le décryptage du code 'Sur Groupe d'Option Time Periode '### Voir aussi Select Case à la place de If-Else '### jour, ou semaine, ou mois, ou années : Ces formats sont expliqués dans l'aide If Me.ChoixTimePeriod = 1 Then '### Jour --------------------- '### Jour est un peu court : Est-ce que tu veux affiché les données ' des 23 de chaque mois : strSQLTimePeriod = " GROUP BY format([Date Opération],'jj')" ' des Lundis de chaque mois : strSQLTimePeriod = " GROUP BY format([Date Opération],'e')" ' ou bien simplement classer les résultats par Jour, Mois et Année ? strSQLTimePeriod = " GROUP BY format([Date Opération],'dd-mm-yyyy')" ElseIf Me.ChoixTimePeriod = 2 Then '### Semaine '### Pourquoi avoir abrégé l'année sur 2 digits ? risqué strSQLTimePeriod = " GROUP BY format([Date Opération],'ee-yyyy')" '### Manque espace devant le G de GROUP ElseIf Me.ChoixTimePeriod = 3 Then '### Mois '### Pourquoi avoir abrégé l'année sur 2 digits ? risqué '### 'mmm' donne le mois sous forme de lettres en abrégé : janvier et juin se suivront ' Normal ? ' Sinon, utilise le format numérique des mois : 'mm-yyyy' strSQLTimePeriod = " GROUP BY format([Date Opération],'mmm-yyyy')" '### Manque espace devant le G de GROUP ElseIf Me.ChoixTimePeriod = 4 Then '### Année strSQLTimePeriod = " GROUP BY format([Date Opération],'yyyy')" '### Manque espace devant le G de GROUP End If '### Je ne suis pas certain qu'on puisse faire du AND ou du WHERE dans un GROUP BY (à vérifier) ' Si c'est Ok, revoir le WHERE qui n'existe que dans le traitement de date de fin ' alors qu'il devrait aussi y en avoir un dans le traitement de date de début '### Ne pas confondre GROUP BY et ORDER BY ou encore le WHERE du SELECT 'Sur Date Début If TxtDateDébut <> "" Then strSQLDateDébut = " AND ([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 '### inférieurE 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 strSQL = strSQL & strSQLTimePeriod & strSQLDateDébut & strSQLDateFin Me.SF_Recap.Form.RecordSource = strSQL
'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 Me.SF_Recap.Form.RecordSource = strSQL
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSELECT Portefeuille, Marché, [Ss - jacent], Sum([Nb Opé]) AS Trades, Sum([Nombre de lot]) AS Lots, [Date Opération] FROM SourceData GROUP BY [Portefeuille], [Marché], [Ss - jacent], [Date Opération] HAVING (((Portefeuille)="IXOEUX") AND ((Marché)="EUREX")) ORDER BY [Date Opération];
strSQL = "SELECT [Portefeuille], [Marché], [Ss - Jacent], [SommedeNb Opé], [SommedeNombre de lot], [Date Opération] FROM [Recap Deals] WHERE ([Portefeuille] Like 'IXOEUX*' And [Marché] like 'EUREX*' ) AND format([Date Opération],'mm-yyyy') AND ([Date Opération]>=#1/1/2010# AND ([Date Opération]<=#1/15/2010#)