rch05
Messages postés32Date d'inscriptionsamedi 6 janvier 2007StatutMembreDernière intervention 5 mars 2015
-
18 sept. 2010 à 10:03
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
18 sept. 2010 à 19:07
Bonjour,
J'ai un formulaire multicritère.
Lorsque j'ai effectué un choix, j'ai plusieurs dates.
Par exemple (04/09/2010 et 13/09/2010)
Quand, je choisis la 1er date rien à l’affichage.
Mais, par contre sur la 2eme (la plus récente) l’affichage s’effectue sur le bon enregistrement
Ci-dessous le code:
Dim sql As String, ClauseHAVING As String
sql = "SELECT tblReponseGestionnaire.Causedelacause,tblReponseGestionnaire.Gestionnaire,tblReponseGestionnaire.DateReponseMail,tblReponseGestionnaire.DateEnvoiMail,tblReponseGestionnaire.DateRéception,tblReponseGestionnaire.QtéRéceptionnée,tblReponseGestionnaire.Commentaire,Sum(tblHistoriqueMàJ.QteOrdre)AS SommeDeQteOrdre" & vbCrLf
sql = sql & "FROM tblReponseGestionnaire" & vbCrLf
sql sql & "INNER JOIN tblHistoriqueMàJ ON tblReponseGestionnaire.Causedelacause tblHistoriqueMàJ.Causedelacause" & vbCrLf
sql = sql & "GROUP BY tblReponseGestionnaire.Causedelacause,tblReponseGestionnaire.Gestionnaire,tblReponseGestionnaire.DateReponseMail,tblReponseGestionnaire.DateEnvoiMail,tblReponseGestionnaire.DateRéception,tblReponseGestionnaire.QtéRéceptionnée,tblReponseGestionnaire.Commentaire"
'Aménager la clause Where
If Not Me.chkCauseDeLaCause Then
ClauseHAVING ClauseHAVING & "And tblReponseGestionnaire.Causedelacause '" & Me.cmbCauseDeLaCause & "' "
End If
If Not Me.chkDateCauseDeLaCause Then
ClauseHAVING ClauseHAVING & "And tblReponseGestionnaire.DateEnvoiMail #" & Me.cmbDateCauseDeLaCause & "# "
End If
If Not Me.chkGestionnaire Then
ClauseHAVING ClauseHAVING & "And tblReponseGestionnaire.Gestionnaire '" & Me.cmbGestionnaire & "' "
End If
Select Case Me.TypeRetard1
Case 1
ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.DateReponseMail Is Null"
Case 2
ClauseHAVING = ClauseHAVING & "And tblReponseGestionnaire.DateReponseMail Is not Null"
End Select
If Len(ClauseHAVING) = 0 Then
GoTo AménagerLaQueueSQL
Else
' supprimer le 1er And et Aménager la tête de clause
ClauseHAVING = " HAVING " & Right(ClauseHAVING, Len(ClauseHAVING) - 3)
sql = sql & ClauseHAVING
End If
AménagerLaQueueSQL:
sql = sql & ";"
'Debug.Print sql
Me.Sfrm.Form.RecordSource = sql
Je pense qu'il y a un pb de format, mais je n'arrive pas à trouver la solution.
Peut-on m’expliquer d’où viens mon erreur?
Merci d'avance de votre aide
A voir également:
[Catégorie ENCORE modifiée .Net --> VBA] Pb de syntaxe SQL en VBA sur la sélecti
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 18 sept. 2010 à 13:58
Salut
Merci de faire attention à la catégorie de tes questions.
Il est étrange (voire osé) de mettre des retours à la ligne dans une requète SQL. Moi, je les supprimerais.
As-tu visualisé la chaine SQL avant de la soumettre ?
Donne-nous un aperçu d'une requète telle que tu la fabriques.
Quand tu prépares une requète sur plusieurs lignes de code VB, pense à toujours mettre un espace en fin de chaque ligne pour éviter que les textes soient collés.
Problème de date : Sujet récurant sur le forum.
As-tu fait une simple recherche de "date sql" parmi les questions du forum ?
Alors je vais répété ce qu'on répète à longueur de semaine à ceux qui ne font pas de recherche :
Dans une requète SQL, les dates sont en priorité traitées comme si elles étaient au format US, c'est à dire Mois/Jour/Année.
Ta première date, 04/09/2010, peut donc être interprétée comme cela et le compilateur s'en suffira.
Ta seconde date, 13/09/2010, ne peut pas être une date US, donc le compilateur inverse le 13 et le 9.
Il est donc important de toujours formater les dates fournies à une requète SQL pour qu'il n'y ait jamais d'ambigüité, exemple :
"...DateEnvoiMail = #" & Format(Me.cmbDateCauseDeLaCause, "mm/dd/yyyy)" & "# "
ou, à la japonaise
"...DateEnvoiMail = #" & Format(Me.cmbDateCauseDeLaCause, "yyyy/mm/dd)" & "# "
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
rch05
Messages postés32Date d'inscriptionsamedi 6 janvier 2007StatutMembreDernière intervention 5 mars 2015 18 sept. 2010 à 17:51
Bonjour Jack,
Un grand merci de ton aide.
Ta réponse a résolue mon PB.
J'ai bien cherché sur le forum, mais avec le critère "Format date".
Je suis un jeune débutant (58ans). J'apprends, ça me passionne et ce n'est pas évident.
Pour répondre à ta question sur les retours à la ligne, c'est pour que mes requêtes soient plus lisible.
J'ai bien visualisé la chaine SQL qui fonctionnait.
J'ai pris note concernant l'espace en fin de chaque ligne.
Merci