Ajouter écart date dans expression SQL (AjouteràWhere )

Le
lion.eric
Bonsoir, le code qui suit fonctionne merveille mais j'ai un gros
problme
J'aimerai ajouter une clause AjouterWhere qui prendrait les champs
DATEDEBUT et DATEFIN de mon formulaire et qui irait comparer au champ
DATE_RETOUR de ma requte

Mais autant ajouter un champs comme plus bas ne me pose aucun problme
que l je n'ai sait comment faire mon AjouterWhere



Dim MonSQL1 As String, MonCritre1 As String, MonJeuEnreg1 As
String
Dim NbrArg1 As Integer
Dim tmp1 As Variant

' Initialise le compteur d'argument.
NbrArg1 = 0

' Initialise l'instruction SELECT.
MonSQL1 = "SELECT * FROM [Req_Rech1] WHERE "
MonCritre1 = ""
' Utilise les valeurs entres dans les zones de texte de l'en-
tte de formulaire
' pour crer les critres de la clause WHERE.
AjouterWhere [RA], "[RA]", MonCritre1, NbrArg1
AjouterWhere [provenance], "[provenance]", MonCritre1, NbrArg1
'**********************
C'est l que je ne sais pas comment mettre mon AjouterWhere

etc 'AjouterWhere le champs de la requete [DATE_RETOUR] comparer
avec [Forms]![fm_recherche]![DATEDEBUT] And [Forms]![fm_recherche]!
[DATEFIN

'*********************
MonCritre1, NbrArg1
' vous pouvez ajouter d'autres conditions avec le m^me type de
ligne ci-dessus

' Si aucun critre n'est spcifi, renvoie tous les
enregistrements.
If MonCritre1 = "" Then
MonCritre1 = "True"
End If

' Cre l'instruction SELECT.
MonJeuEnreg1 = MonSQL1 & MonCritre1

' Dfini la proprit RecordSource du Sous-Formulaire Recherche
Multi SF
Me![fm_rechercheSF1].Form.RecordSource = MonJeuEnreg1

' Si aucun enregistrement ne correspond aux critres, affiche un
message.
' Active le bouton Effacer.
If Me![fm_rechercheSF1].Form.RecordsetClone.RecordCount = 0 Then
MsgBox "Aucun enregistrement ne correspond aux critres
introduits.", 48, "Aucun enregistrements trouvs"
Me!effacer1.SetFocus
Else
' Active le contrle dans la section dtail.
tmp1 = ActiveContrles("Detail", True)
' Place le point d'insertion dans le Sous-Formulaire
F_Recherche Multi SF
Me![fm_rechercheSF1].SetFocus
End If

Merci beaucoup
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
lion.eric
Le #6358991
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
lion.eric
Le #6358971
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
Le #6358631
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...

Publicité
Poster une réponse
Anonyme