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

Le
lion.eric
Bonsoir, le code qui suit fonctionne à merveille mais j'ai un gros
problème
J'aimerai ajouter une clause AjouteràWhere qui prendrait les champs
DATEDEBUT et DATEFIN de mon formulaire et qui irait comparer au champ
DATE_RETOUR de ma requête

Mais autant ajouter un champs comme plus bas ne me pose aucun problème
que là je n'ai sait comment faire mon AjouteràWhere



Dim MonSQL1 As String, MonCritère1 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 "
MonCritère1 = ""
' Utilise les valeurs entrées dans les zones de texte de l'en-
tête de formulaire
' pour créer les critères de la clause WHERE.
AjouteràWhere [RA], "[RA]", MonCritère1, NbrArg1
AjouteràWhere [provenance], "[provenance]", MonCritère1, NbrArg1
'**********************
C'est là que je ne sais pas comment mettre mon AjouteràWhere

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

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

' Si aucun critère n'est spécifié, renvoie tous les
enregistrements.
If MonCritère1 = "" Then
MonCritère1 = "True"
End If

' Crée l'instruction SELECT.
MonJeuEnreg1 = MonSQL1 & MonCritère1

' Défini la propriété RecordSource du Sous-Formulaire Recherche
Multi SF
Me![fm_rechercheSF1].Form.RecordSource = MonJeuEnreg1

' Si aucun enregistrement ne correspond aux critères, affiche un
message.
' Active le bouton Effacer.
If Me![fm_rechercheSF1].Form.RecordsetClone.RecordCount = 0 Then
MsgBox "Aucun enregistrement ne correspond aux critères
introduits.", 48, "Aucun enregistrements trouvés"
Me!effacer1.SetFocus
Else
' Active le contrôle dans la section détail.
tmp1 = ActiveContrôles("Detail", True)
' Place le point d'insertion dans le Sous-Formulaire
F_Recherche Multi SF
Me![fm_rechercheSF1].SetFocus
End If

Merci beaucoup
Vidéos High-Tech et Jeu Vidéo
Téléchargements
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