Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2011, 12h31   #1
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 19
Points : 3
Points : 3
Par défaut Problème ouverture d'état sous deux conditions

Dans un formulaire intitulé "suivi des affaires", j'ai crée plusieurs listes déroulantes me permettant d'ouvrir un état en
fonction d'une condition de l'une de ces listes.
Mais, ma première condition est de commencer par une période que je peux ou non modifier.
Mon formulaire à deux champs, intitulés : txtdatedebut et txtdatefin
Le format de ces champs est "date abrégé"

L'activation de mon formulaire est :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Form_Current()
 
DoCmd.RunMacro "dimension"
 
Dim db As DAO.Database, rst As Recordset, strcritère As String
Set rst = CurrentDb.OpenRecordset("Requête1")
 
rst.MoveFirst
 
 
Me.txtdatedebut = rst("Date d'enregistrement")
 
'libère les objets
rst.Close
Set rst = Nothing
Set db = Nothing
Dans ce formulaire, le bouton ouverture d'état renvoie le code ci-dessous suivant, les deux conditions citées plus haut :
d'abord la date et ensuite une condition de la liste :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Private Sub Commande151_Click()
 
 
Dim strfiltre As String, stdocname As String, strdatedebut As String, strdatefin As String, strintervalle As String
 
 
stdocname = "Analyse : Suivi des affaires"
 
 
 
'filtre sur personne
If Not IsNull(Me!cmbqui) Then
strfiltre = "[Qui]='" & Me!cmbqui & "'"
 
 
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 
 
 
'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 strfiltre = strfiltre & " AND "
'strfil = strfiltre & "[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 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
Si l'utilisateur à renseigné la période voulue mais n'a pas renseigné d'autres info dans une de ces listes,
alors, l'état s'ouvre mais ne tient pas compte de la période. choisie par l'utilisateur.


J'ai essayé de mettre :

Code :
DoCmd.OpenReport stdocname, acViewPreview, , strfil and strfiltre
mais ça ne marche pas(incompatibilité)

Je vous remercie pour votre aide.
dav787 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 12h14   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 756
Points : 1 756
Bonjour,
En mode débuggage, qu'affiche strfil and strfiltre?
Pourquoi strfiltre ne contient-il pas l'ensemble des conditions ?
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 19h46   #3
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 19
Points : 3
Points : 3
Bonjour,

En mode débuggage, strfil and strfiltre renvoit incompatibilité de type.

Si je laisse strfiltre, il ne prend pas la date.

Si je supprimet strfiltre et laisse strfil pour contrôle, il me revoit l'erreur :
"Erreur de syntaxe dans la date dans l'expression '([Date d'enregistrement]>=##and[Date d'enregistrement]<##)'.

Merci encore pour l'aide
dav787 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h09.


 
 
 
 
Partenaires

Hébergement Web