Problème de condition pour ouvrir un état

dav787

XLDnaute Nouveau
Bonjour,
Comme annoncé en objet, j'ai un formulaire avec des listes déroulantes et des champs textes.
Deux champs date début et date fin peuvent être définies par l'utilisateur et constituent ma 1ère condition.
Ma seconde condition est un autre élément d'une liste ou champ texte.
Vous trouverez mon code ci-dessous.
Le problème que je rencontre, c'est que je ne peux pas ouvrir un état si mon deuxième filtre est de format monétaire.Par défaut, il m'ouvre l'intervalle des montants définis mais, toutes les dates, depuis le début de création de ma base
Exemple :
Je veux comme montant min : 250 et max 500 pour la période du 15/03/2011 au 19/11/2011 il va me sortir tous les enregistrements compris entre 250 et 300 euros et ce quelques soit la date début et/ou date fin:
Comment ouvrir mon état avec condition date et monétaire.
J'insiste à nouveau, la date choisie plus un autre élément de mes listes déroulantes, fonctionnent;Seul avec le montant, ça coince
J'espère avoir été clair et vous remercie
Je vous remercie

Code:
Dim strfiltre As String, stDocName As String, strdatedebut As String, strdatefin As String, strintervalle As String

Dim strfil As String

 strdatedebut = Nz(Me.txtdatedebut, "")
   strdatefin = Nz(Me.txtdatefin, "")
    If IsDate(strdatedebut) And IsDate(strdatefin) Then
        strdatedebut = Format(Me.txtdatedebut, "dd/mm/yyyy")
        strdatefin = Format(Me.txtdatefin, "dd/mm/yyyy")
        End If
       strintervalle = "[Date d'enregistrement]>=#" & strdatedebut & "# AND [Date d'enregistrement]<#" & strdatefin & "#"
       If Me.FilterOn Then
           strfil = "WHERE " & Me.Filter & " AND " & strintervalle
        Else
            strfil = strintervalle
       End If
 
   
    stDocName = "Analyse : Suivi des affaires"


       ' strwhere = "[Qui]='" & Me!Qui & "'"

'filtre sur personne
If Not IsNull(Me!cmbqui) Then
strfiltre = "[Qui]='" & Me!cmbqui & "'"


End If

'filtre sur bl
If Not IsNull(Me.cmbbl) Then
If strfiltre <> "" Then strfiltre = strfiltre & " And "
strfiltre = strfiltre & "[bl]='" & Me.cmbbl & "'"



End If
'filtre sur cofor

If Not IsNull(Me.cmbcofor) Then
If strfiltre <> "" Then strfiltre = strfiltre & " And "
strfiltre = strfiltre & "[Cofor]='" & Me.cmbcofor & " '"

End If


'filtre sur ano
If Not IsNull(Me.cmbano) Then
If strfiltre <> "" Then strfiltre = strfiltre & " And"
strfiltre = strfiltre & "[Ano constatée]='" & "" & "" & Me.cmbano & "'"

End If
'filtre sur date facture


  strfil = "[Date d'enregistrement]>=#" & strdatedebut & "# AND [Date d'enregistrement]<#" & strdatefin & "#"
        If Me.FilterOn Then
            strfil = "WHERE " & Me.Filter & " AND " & strintervalle
             strfil = strintervalle
    
     End If
     
     
    strdatedebut = Nz(Me.txtdatedebut, "")
   strdatefin = Nz(Me.txtdatefin, "")
   If IsDate(strdatedebut) And IsDate(strdatefin) Then
        strdatedebut = Format(Me.txtdatedebut, "dd/mm/yyyy")
        strdatefin = Format(Me.txtdatefin, "dd/mm/yyyy")
 strintervalle = "[Date d'enregistrement]>=#" & strdatedebut & "# AND [Date d'enregistrement]<#" & strdatefin & "#"
End If

If Not IsNull(Me.txtdatedebut) Then
If strfil <> "" Then strfil = strfil & " AND "
 strfil = strfil & "[Date d'enregistrement]=#" & Me.txtdatedebut & "#"
 
End If
If Not IsNull(Me.txtdatefin) Then
If strfil <> "" Then strfil = strfil & " And "
 strfil = strfil & "[Date d'enregistrement]=#" & Me.txtdatefin & "#"

End If

'filtre sur référence
If Not IsNull(Me.cmbref) Then
If strfiltre <> "" Then strfiltre = strfiltre & " And "
strfiltre = strfiltre & "[Référence]='" & Me.cmbref & "'"
End If

'filtre sur filière

If Not IsNull(Me.cmbfilière) Then
'If strfiltre <> "" Then strfiltre = strfiltre & " And "
strfiltre = "[filière]='" & Me!cmbfilière & " '"
'strfiltre = strfiltre & "[filière]='" & Me.cmbfilière & " '"

 
End If

'filtre sur montant
If Not IsNull(Me.txtmontantmin) Then
If strfiltre <> "" Then strfiltre = strfiltre & " And "
strfiltre = strfiltre & "([Montant HT]>=" & Me.txtmontantmin & ")"
End If

If Not IsNull(Me.txtmontantmax) Then
If strfiltre <> "" Then strfiltre = strfiltre & " And "
strfiltre = strfiltre & "([Montant HT]<=" & Me.txtmontantmax & ")"
End If


DoCmd.OpenReport stDocName, acViewPreview, , strfiltre



End Sub
 
C

Compte Supprimé 979

Guest
Re : Problème de condition pour ouvrir un état

Bonjour Dav787,

J'insiste à nouveau, la date choisie plus un autre élément de mes listes déroulantes, fonctionnent
Seul avec le montant, ça coince
Tu me vois très étonné
Car si tu regarde ton code... tu as la variable strfil et strfiltre !?

Deuxièmement, mets un MsgBox pour connaitre le texte de ton filtre
Code:
MsgBox "Le filtre est : " & strfiltre
DoCmd.OpenReport stDocName, acViewPreview, , strfiltre

A+
 

dav787

XLDnaute Nouveau
Re : Problème de condition pour ouvrir un état

Bonjour et merci pour cette information.
En mettant un msgbox comme tu l'annonces, ce qui est bizarre, c'est qu'il ne connait pas la date mais qu'une valeur d'un champ texte ou d'un élément d'une liste déroulante.
Le msgbox renvoie exemple(votre filtre est toto) alors que j'ai modifié manuellement la date.
Ma question nécessitant l'ouverture de l'état était :
entre 01/09/2011 et maintenant, le résultat de toto compris entre 250 et 350 euros.
Message filtre : votre filtre est >=250 et <= 350.
J'ai remplacé strfil par strfiltre, mais rien ne change.
Dans ma requête, sur le champ date, j'ai inscrit : >= formulaires[nom de mon formulaires])![txtdatedebut] et <=(mon formulaires][txtdatefin]
Idem pour le champ montant.
Je ne vois pas ce que je peux faire.
Merci encore pour votre aide
D
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 870
Membres
103 980
dernier inscrit
grandmasterflash38