Ajouter écart date dans expression SQL (AjouteràWhere )
3 réponses
lion.eric
Bonsoir, le code qui suit fonctionne =E0 merveille mais j'ai un gros
probl=E8me
J'aimerai ajouter une clause Ajouter=E0Where qui prendrait les champs
DATEDEBUT et DATEFIN de mon formulaire et qui irait comparer au champ
DATE_RETOUR de ma requ=EAte
Mais autant ajouter un champs comme plus bas ne me pose aucun probl=E8me
que l=E0 je n'ai sait comment faire mon Ajouter=E0Where ...
Dim MonSQL1 As String, MonCrit=E8re1 As String, MonJeuEnreg1 As
String
Dim NbrArg1 As Integer
Dim tmp1 As Variant
' Initialise le compteur d'argument.
NbrArg1 =3D 0
' Initialise l'instruction SELECT.
MonSQL1 =3D "SELECT * FROM [Req_Rech1] WHERE "
MonCrit=E8re1 =3D ""
' Utilise les valeurs entr=E9es dans les zones de texte de l'en-
t=EAte de formulaire
' pour cr=E9er les crit=E8res de la clause WHERE.
Ajouter=E0Where [RA], "[RA]", MonCrit=E8re1, NbrArg1
Ajouter=E0Where [provenance], "[provenance]", MonCrit=E8re1, NbrArg1
'**********************
C'est l=E0 que je ne sais pas comment mettre mon Ajouter=E0Where
etc... 'Ajouter=E0Where le champs de la requete [DATE_RETOUR] =E0 comparer
avec [Forms]![fm_recherche]![DATEDEBUT] And [Forms]![fm_recherche]!
[DATEFIN
'*********************
MonCrit=E8re1, NbrArg1
' vous pouvez ajouter d'autres conditions avec le m^me type de
ligne ci-dessus
' Si aucun crit=E8re n'est sp=E9cifi=E9, renvoie tous les
enregistrements.
If MonCrit=E8re1 =3D "" Then
MonCrit=E8re1 =3D "True"
End If
' D=E9fini la propri=E9t=E9 RecordSource du Sous-Formulaire Recherche
Multi SF
Me![fm_rechercheSF1].Form.RecordSource =3D MonJeuEnreg1
' Si aucun enregistrement ne correspond aux crit=E8res, affiche un
message.
' Active le bouton Effacer.
If Me![fm_rechercheSF1].Form.RecordsetClone.RecordCount =3D 0 Then
MsgBox "Aucun enregistrement ne correspond aux crit=E8res
introduits.", 48, "Aucun enregistrements trouv=E9s"
Me!effacer1.SetFocus
Else
' Active le contr=F4le dans la section d=E9tail.
tmp1 =3D ActiveContr=F4les("Detail", True)
' Place le point d'insertion dans le Sous-Formulaire
F_Recherche Multi SF
Me![fm_rechercheSF1].SetFocus
End If
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
lion.eric
Rebonjour.... Je voulais bien sûr dire
AjouteràWhere le champs de la requete [DATE_RETOUR] between [Forms]! [fm_recherche]![DATEDEBUT] And [Forms]![fm_recherche]![DATEFIN ] Mais je ne sais pas comment le formuler pour l'écart de date
Merci à tous et toutes Max
Rebonjour....
Je voulais bien sûr dire
AjouteràWhere le champs de la requete [DATE_RETOUR] between [Forms]!
[fm_recherche]![DATEDEBUT] And [Forms]![fm_recherche]![DATEFIN ]
Mais je ne sais pas comment le formuler pour l'écart de date
AjouteràWhere le champs de la requete [DATE_RETOUR] between [Forms]! [fm_recherche]![DATEDEBUT] And [Forms]![fm_recherche]![DATEFIN ] Mais je ne sais pas comment le formuler pour l'écart de date
Merci à tous et toutes Max
lion.eric
Zut j'ai omis de vous mettre ce p'tit bout de code
Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp As String, MonCritère As String, NbrArg As Integer)
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then ' Ajoute "et" si aucun critère existe. If NbrArg > 0 Then MonCritère = MonCritère & " And " End If
' Ajoute le critère au critère existant. ' Entoure la valeur de ValeurChamp et l'astérisque de points d'exclamations. MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument. NbrArg = NbrArg + 1 End If
End Sub
Zut j'ai omis de vous mettre ce p'tit bout de code
Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp As String,
MonCritère As String, NbrArg As Integer)
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then
' Ajoute "et" si aucun critère existe.
If NbrArg > 0 Then
MonCritère = MonCritère & " And "
End If
' Ajoute le critère au critère existant.
' Entoure la valeur de ValeurChamp et l'astérisque de points
d'exclamations.
MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) &
ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument.
NbrArg = NbrArg + 1
End If
Zut j'ai omis de vous mettre ce p'tit bout de code
Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp As String, MonCritère As String, NbrArg As Integer)
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then ' Ajoute "et" si aucun critère existe. If NbrArg > 0 Then MonCritère = MonCritère & " And " End If
' Ajoute le critère au critère existant. ' Entoure la valeur de ValeurChamp et l'astérisque de points d'exclamations. MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument. NbrArg = NbrArg + 1 End If
End Sub
Fabien
Zut j'ai omis de vous mettre ce p'tit bout de code
Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp As String, MonCritère As String, NbrArg As Integer)
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then ' Ajoute "et" si aucun critère existe. If NbrArg > 0 Then MonCritère = MonCritère & " And " End If
' Ajoute le critère au critère existant. ' Entoure la valeur de ValeurChamp et l'astérisque de points d'exclamations. MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument. NbrArg = NbrArg + 1 End If
End Sub Salut,
Je comprend pas comment cela peut fonctionner <:-) Les variables déclarées dans l'appel de la sub sont locales a celle-ci. Donc tu ne reccupere jamais en global Moncritére et NbrArg. Si avant l'appel a ajouteàwhere Nbrarg1=0, il reste =0 aprés. Idem pour moncritere1 : vide avant, vide aprés. Si je peux me permettre : On remplace Sub AjouteràWhere par
Private Function AjouteràWhere(ValeurChamp As Variant, NomChamp As String, MonCritère As String, NbrArg As Integer) as string
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then ' Ajoute "et" si aucun critère existe. If NbrArg > 0 Then MonCritère = MonCritère & " And " End If
' Ajoute le critère au critère existant. ' Entoure la valeur de ValeurChamp et l'astérisque de points d'exclamations. MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument. NbrArg = NbrArg + 1 End If Ajouteràwhere=Moncritére End Sub
Dans le code Principal . . . Moncritére1=AjouteràWhere ([RA], "[RA]", MonCritère1, NbrArg1) If [RA]<>"" then NbrArg1=NbrArg+1 MonCritére1=AjouteràWhere ([provenance], "[provenance]", MonCritère1, NbrArg1) If [Provenance]<>"" then NbrArg1=NbrArg+1 . . . 'Pour les dates fait un traitement à part Moncritere1=MonCtritere1 & "[Date Retour] between #" & Format( [Forms]![fm_recherche]![DATEDEBUT],"yyyymmdd") & "# And #" & Format([Forms]![fm_recherche]! [DATEFIN],"yyyymmdd") & "# "
@Suivre...
Zut j'ai omis de vous mettre ce p'tit bout de code
Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp As String,
MonCritère As String, NbrArg As Integer)
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then
' Ajoute "et" si aucun critère existe.
If NbrArg > 0 Then
MonCritère = MonCritère & " And "
End If
' Ajoute le critère au critère existant.
' Entoure la valeur de ValeurChamp et l'astérisque de points
d'exclamations.
MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) &
ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument.
NbrArg = NbrArg + 1
End If
End Sub
Salut,
Je comprend pas comment cela peut fonctionner <:-)
Les variables déclarées dans l'appel de la sub sont locales a celle-ci.
Donc tu ne reccupere jamais en global Moncritére et NbrArg.
Si avant l'appel a ajouteàwhere Nbrarg1=0, il reste =0 aprés. Idem pour
moncritere1 : vide avant, vide aprés.
Si je peux me permettre :
On remplace Sub AjouteràWhere par
Private Function AjouteràWhere(ValeurChamp As Variant, NomChamp As
String, MonCritère As String, NbrArg As Integer) as string
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then
' Ajoute "et" si aucun critère existe.
If NbrArg > 0 Then
MonCritère = MonCritère & " And "
End If
' Ajoute le critère au critère existant.
' Entoure la valeur de ValeurChamp et l'astérisque de points
d'exclamations.
MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) &
ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument.
NbrArg = NbrArg + 1
End If
Ajouteràwhere=Moncritére
End Sub
Dans le code Principal
.
.
.
Moncritére1=AjouteràWhere ([RA], "[RA]", MonCritère1, NbrArg1)
If [RA]<>"" then NbrArg1=NbrArg+1
MonCritére1=AjouteràWhere ([provenance], "[provenance]", MonCritère1,
NbrArg1)
If [Provenance]<>"" then NbrArg1=NbrArg+1
.
.
.
'Pour les dates fait un traitement à part
Moncritere1=MonCtritere1 & "[Date Retour] between #" & Format(
[Forms]![fm_recherche]![DATEDEBUT],"yyyymmdd") & "# And #" &
Format([Forms]![fm_recherche]!
[DATEFIN],"yyyymmdd") & "# "
Zut j'ai omis de vous mettre ce p'tit bout de code
Private Sub AjouteràWhere(ValeurChamp As Variant, NomChamp As String, MonCritère As String, NbrArg As Integer)
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then ' Ajoute "et" si aucun critère existe. If NbrArg > 0 Then MonCritère = MonCritère & " And " End If
' Ajoute le critère au critère existant. ' Entoure la valeur de ValeurChamp et l'astérisque de points d'exclamations. MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument. NbrArg = NbrArg + 1 End If
End Sub Salut,
Je comprend pas comment cela peut fonctionner <:-) Les variables déclarées dans l'appel de la sub sont locales a celle-ci. Donc tu ne reccupere jamais en global Moncritére et NbrArg. Si avant l'appel a ajouteàwhere Nbrarg1=0, il reste =0 aprés. Idem pour moncritere1 : vide avant, vide aprés. Si je peux me permettre : On remplace Sub AjouteràWhere par
Private Function AjouteràWhere(ValeurChamp As Variant, NomChamp As String, MonCritère As String, NbrArg As Integer) as string
' Crée le critère pour la clause WHERE.
If ValeurChamp <> "" Then ' Ajoute "et" si aucun critère existe. If NbrArg > 0 Then MonCritère = MonCritère & " And " End If
' Ajoute le critère au critère existant. ' Entoure la valeur de ValeurChamp et l'astérisque de points d'exclamations. MonCritère = (MonCritère & NomChamp & " Like " & Chr(39) & ValeurChamp & Chr(42) & Chr(39))
' Augmente le compteur d'argument. NbrArg = NbrArg + 1 End If Ajouteràwhere=Moncritére End Sub
Dans le code Principal . . . Moncritére1=AjouteràWhere ([RA], "[RA]", MonCritère1, NbrArg1) If [RA]<>"" then NbrArg1=NbrArg+1 MonCritére1=AjouteràWhere ([provenance], "[provenance]", MonCritère1, NbrArg1) If [Provenance]<>"" then NbrArg1=NbrArg+1 . . . 'Pour les dates fait un traitement à part Moncritere1=MonCtritere1 & "[Date Retour] between #" & Format( [Forms]![fm_recherche]![DATEDEBUT],"yyyymmdd") & "# And #" & Format([Forms]![fm_recherche]! [DATEFIN],"yyyymmdd") & "# "