débutante : probleme d'écriture de filtre
Le
Sabine B.
Bonjour
Je chercher à trier des enregistrements à l'aide d'une procédure
évenementielle, je dois avoir un problème de définition de valeursje me
demande si je ne mélange pas des carottes et des navets!
Sur la commande clic d'un bouton rechercher d'une boite de dialogue j'ai la
procédure qui suit qui fonctionne bien .
Je cherche pour une autre boite de dialogue à faire presque la même chose la
seule différence étant que je veux ajouter un critère autre que la date dans
mon filtre mais Hélas access m'affiche lors de l'execution de cette
procédure :Incompatibilité de type?????
Fonctionne:
Select Case Me!ChoixConsultation
Dim Filter As String
Case 1
Filter = "[DateRMN2]Úte()"
DoCmd.OpenReport "CahierRMN", acViewPreview, , Filter
Case 2
Filter = "[DateRMN2]> Date()-8"
DoCmd.OpenReport "CahierRMN", acViewPreview, , Filter
Case 3
If IsNull([DateDebut]) Or IsNull([DateFin]) Then
MsgBox "Vous devez taper une date de début et une date de fin."
DoCmd.GoToControl "DateDebut"
Else
If [DateDebut] > [DateFin] Then
MsgBox "La date de fin doit être postérieure à la date de
début."
DoCmd.GoToControl "DateDebut"
Else
Filter = "[DateRMN2]Between Forms![BdeD_RMN_C]![DateDebut]and
[Forms]![BdeD_RMN_C]![DateFin] "
End If
End If
DoCmd.OpenReport "CahierRMN", acViewPreview, , Filter
End Select
Ne Fonctionne pas:
Dim Filter2 As String
Const ConstValeurInstrument = 4
Select Case Me!ChoixConsultation
Case 1
Filter2 = "[DateMS2]Úte()"
DoCmd.OpenReport "CahierMS", acViewPreview, , Filter2
Case 2
Filter2 = "[DateMS2]> Date()-20" And
"[NumRefAppareil].value=ConstValeurInstrument"
'ouvre le rapport cahier MS sur les 20 derniers jours pour l'instrument 4
(NumRefAppareil étant la clé primaire de ma table)
DoCmd.OpenReport "CahierMS", acViewPreview, , Filter2
Case 3
If IsNull([DateDebut]) Or IsNull([DateFin]) Then
MsgBox "Vous devez taper une date de début et une date de fin."
DoCmd.GoToControl "DateDebut"
Else
If [DateDebut] > [DateFin] Then
MsgBox "La date de fin doit être postérieure à la date de
début."
DoCmd.GoToControl "DateDebut"
Else
Filter2 = "[DateMS2]Between Forms![BdeD_LCQ_C]![DateDebut]and
[Forms]![BdeD_LCQ_C]![DateFin]"
End If
End If
DoCmd.OpenReport "CahierMS", acViewPreview, , Filter2
End Select
Merci pour votre aide.
Sabine
Je chercher à trier des enregistrements à l'aide d'une procédure
évenementielle, je dois avoir un problème de définition de valeursje me
demande si je ne mélange pas des carottes et des navets!
Sur la commande clic d'un bouton rechercher d'une boite de dialogue j'ai la
procédure qui suit qui fonctionne bien .
Je cherche pour une autre boite de dialogue à faire presque la même chose la
seule différence étant que je veux ajouter un critère autre que la date dans
mon filtre mais Hélas access m'affiche lors de l'execution de cette
procédure :Incompatibilité de type?????
Fonctionne:
Select Case Me!ChoixConsultation
Dim Filter As String
Case 1
Filter = "[DateRMN2]Úte()"
DoCmd.OpenReport "CahierRMN", acViewPreview, , Filter
Case 2
Filter = "[DateRMN2]> Date()-8"
DoCmd.OpenReport "CahierRMN", acViewPreview, , Filter
Case 3
If IsNull([DateDebut]) Or IsNull([DateFin]) Then
MsgBox "Vous devez taper une date de début et une date de fin."
DoCmd.GoToControl "DateDebut"
Else
If [DateDebut] > [DateFin] Then
MsgBox "La date de fin doit être postérieure à la date de
début."
DoCmd.GoToControl "DateDebut"
Else
Filter = "[DateRMN2]Between Forms![BdeD_RMN_C]![DateDebut]and
[Forms]![BdeD_RMN_C]![DateFin] "
End If
End If
DoCmd.OpenReport "CahierRMN", acViewPreview, , Filter
End Select
Ne Fonctionne pas:
Dim Filter2 As String
Const ConstValeurInstrument = 4
Select Case Me!ChoixConsultation
Case 1
Filter2 = "[DateMS2]Úte()"
DoCmd.OpenReport "CahierMS", acViewPreview, , Filter2
Case 2
Filter2 = "[DateMS2]> Date()-20" And
"[NumRefAppareil].value=ConstValeurInstrument"
'ouvre le rapport cahier MS sur les 20 derniers jours pour l'instrument 4
(NumRefAppareil étant la clé primaire de ma table)
DoCmd.OpenReport "CahierMS", acViewPreview, , Filter2
Case 3
If IsNull([DateDebut]) Or IsNull([DateFin]) Then
MsgBox "Vous devez taper une date de début et une date de fin."
DoCmd.GoToControl "DateDebut"
Else
If [DateDebut] > [DateFin] Then
MsgBox "La date de fin doit être postérieure à la date de
début."
DoCmd.GoToControl "DateDebut"
Else
Filter2 = "[DateMS2]Between Forms![BdeD_LCQ_C]![DateDebut]and
[Forms]![BdeD_LCQ_C]![DateFin]"
End If
End If
DoCmd.OpenReport "CahierMS", acViewPreview, , Filter2
End Select
Merci pour votre aide.
Sabine

Poser une question


Essaie ça
Filter2 = "[DateMS2]> Date()-20" And "[NumRefAppareil].value=" &
ConstValeurInstrument
Gilbert
"Sabine B." news:4563e7cd$0$25921$
Je reprends le code qui fonctionne, et je suis surpris que cela fonctionne:
Filter = "[DateRMN2]Between Forms![BdeD_RMN_C]![DateDebut]and [Forms]![BdeD_RMN_C]![DateFin] "
Il manque des séparateurs "espaces", et normalement, une date doit se trouver entre des délimiteurs "#". Es-tu bien sûr que ça
marche ?
Il me semble que ça devrait ressembler à:
Filter = "[DateRMN2] Between #" & Forms![BdeD_RMN_C]![DateDebut] & _
"# and #" & [Forms]![BdeD_RMN_C]![DateFin] & "#"
J-Pierre
Pour répondre à ta question: oui mon code fonctionne correctement même si je
ne peux pas te dire pourquoi!
Il me rapporte les bon enregistrements, mais je suis toujours preneuse
d'infos pour éviter de taper des lignes comme un "sagouin"!!!
Je ne maîtrise ni les espaces ni l'utilisation de "&"...j'ai un peu de mal à
définir les différents types de valeurs...
Je suis aussi surprise de voir que ce code fonctionne même si je n'ai pas
définit avant : Dim Filter as String.....est ce réellement nécessaire?
J'ai substitué ta ligne qui semble plus rigoureuse ce qui fonctionne aussi
parfaitement
Merci à toi
Sabine
"Jean-Pierre" message de news:
Au début de ton code, avant ta première procédure évènementielle (Private Sub) rajoute "Option Explicit", cette option impose
de définir explicitement les variables (Dim quelque chose), ça évite les erreurs de frappe qui amène des bugs. Ce n'est pas
nécessaire, mais je pense que c'est préférable.
Ca devrait donner:
Option Compare Database
Option Explicit
Private Sub Commande759_Click()
...
...
Dans le cas de ton Filter, Access évalue l'expression en remplaçant chaque variable par sa valeur. Si tu veux voir le résultat
qui est utilisé comme filtre à l'ouverture de ton formulaire, juste après ton instruction, rajoute MsgBox ..., ça deviendra
lumineux :-)
Filter = "[DateRMN2] Between #" & Forms![BdeD_RMN_C]![DateDebut] & _
Docmd Open........
J-Pierre
(Pas tout lu)
Ne serait-il pas préférable d'écrire la date au format US car le filtre
n'est rien d'autre qu'une clause WHERE sans le mot WHERE
donc un truc du genre :
Filter = "[DateRMN2] Between #" & _
Format(Forms![BdeD_RMN_C]![DateDebut],"mm/dd/yyyy") & "# And #" & _
Format(Forms![BdeD_RMN_C]![DateFin],"mm/dd/yyyy") & "#"
--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/micro...cess?hl=fr