VBA / Access - Condition dans un sous-état ?
Résolu/Fermé
Towers
Messages postés
37
Date d'inscription
samedi 2 février 2008
Statut
Membre
Dernière intervention
10 mai 2012
-
30 juil. 2008 à 09:28
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 30 juil. 2008 à 12:10
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 30 juil. 2008 à 12:10
A voir également:
- VBA / Access - Condition dans un sous-état ?
- Excel cellule couleur si condition texte - Guide
- Remettre pc etat usine - Guide
- Etat disque dur - Télécharger - Informations & Diagnostic
- Etat batterie pc portable - Guide
- Access runtime ✓ - Forum Access
4 réponses
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
30 juil. 2008 à 11:53
30 juil. 2008 à 11:53
Bonjour Towers,
Sorry, pas bien lu ton code, pourquoi tu ne changes pas tout simplement ta requête Requête2 dans le gestionnaire des requêtes d'Access en éditant directement le code SQL afin de rajouter la condition AND dateRendements >= a la valeur de champDate.
A plus
Sorry, pas bien lu ton code, pourquoi tu ne changes pas tout simplement ta requête Requête2 dans le gestionnaire des requêtes d'Access en éditant directement le code SQL afin de rajouter la condition AND dateRendements >= a la valeur de champDate.
A plus
Towers
Messages postés
37
Date d'inscription
samedi 2 février 2008
Statut
Membre
Dernière intervention
10 mai 2012
3
30 juil. 2008 à 10:32
30 juil. 2008 à 10:32
Re-bonjour (Up !)
J'en profite pour vous dire ce que j'ai essayé de faire entre temps :
- j'ai essayé dans la fonction "Report_Open()" de "Etat1", d'utiliser les propriétés de "sseta_Etat2" : Filter et FilterOn.
Malheureusement ça ne marche pas.
je vous montre les filtre que je fait (pour l'instant ils sont simpplifiés volontairement)
Tentative 1 :
Tentative 2 :
Tentative 3 :
Tentative 4 :
Quand je fais ce qui me semble le plus logique, c'est-à-dire passer par
Alors:
En revanche quand je passe par
Merci de me donner un coup de main !!!
J'en profite pour vous dire ce que j'ai essayé de faire entre temps :
- j'ai essayé dans la fonction "Report_Open()" de "Etat1", d'utiliser les propriétés de "sseta_Etat2" : Filter et FilterOn.
Malheureusement ça ne marche pas.
je vous montre les filtre que je fait (pour l'instant ils sont simpplifiés volontairement)
Tentative 1 :
Reports![Etat2].Filter = "[dateRendements] >= #2008/07/27#" Reports![Etat2].FilterOn = True
Tentative 2 :
Me.sseta_Etat2.Report.Filter = "Format([dateRendements],""yyyy/mm/dd"") >= #2008/07/27#" Me.sseta_Etat2.Report.FilterOn = True
Tentative 3 :
Reports![Etat2].Filter = "Format([dateRendements],""yyyy/mm/dd"") >= #2008/07/27#" Reports![Etat2].FilterOn = True
Tentative 4 :
Me.sseta_Etat2.Report.Filter = "[dateRendements] >= #2008/07/27#" Me.sseta_Etat2.Report.FilterOn = True
Quand je fais ce qui me semble le plus logique, c'est-à-dire passer par
Me.sseta_Etat2.Report.Filter [CODE]
Alors:
Erreur d'exécution '2455' : La référence d'une expression à lapropriété Form/Report n'est pas valide
En revanche quand je passe par
Reports![Etat2].Filter = [CODE]alors :
Erreur d'exécution '2451' : Le nom d'état 'Etat2' entré dans votre expression est mal orthographié ou fait référence à un état qui n'est pas ouvert ou qui n'existe pas
Merci de me donner un coup de main !!!
talrashha
Messages postés
7
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
27 août 2008
30 juil. 2008 à 10:42
30 juil. 2008 à 10:42
Salut,
Je ne suis pas un pro des états, mais si tu veut rajouter une clause where de type date, cela donnerai :
'Code à placer au chargement du sous-état :
Dim s as string
dim d as string
'on récupere la date en question
d=Reports![Etat1]![champDate].Value
'on la convertie dans le format correct
s="#" & mid(d, 4, 2) & "/" & mid(d, 1, 2) & "/" & mid(d, 7, 4) & "#"
etat2.recordSource = "SELECT RQT.dateRendements, RQT.numMetier, RQT.refCampagne, RQT.refArticle, RQT.descriptionArticle, RQT.rendementA, RQT.rendementB, RQT.rendementC, RQT.rendementD, RQT.rendementE, RQT.rendementM
FROM rqt_Rdmts_Details AS RQT
WHERE (((RQT.numMetier)=États!Etat1!txtMetier))
AND RQT.MaDate=" & d
(Reste à vérifier le nom des champs et surtout si la propriété etat2.recordsource existe :))
Je ne suis pas un pro des états, mais si tu veut rajouter une clause where de type date, cela donnerai :
'Code à placer au chargement du sous-état :
Dim s as string
dim d as string
'on récupere la date en question
d=Reports![Etat1]![champDate].Value
'on la convertie dans le format correct
s="#" & mid(d, 4, 2) & "/" & mid(d, 1, 2) & "/" & mid(d, 7, 4) & "#"
etat2.recordSource = "SELECT RQT.dateRendements, RQT.numMetier, RQT.refCampagne, RQT.refArticle, RQT.descriptionArticle, RQT.rendementA, RQT.rendementB, RQT.rendementC, RQT.rendementD, RQT.rendementE, RQT.rendementM
FROM rqt_Rdmts_Details AS RQT
WHERE (((RQT.numMetier)=États!Etat1!txtMetier))
AND RQT.MaDate=" & d
(Reste à vérifier le nom des champs et surtout si la propriété etat2.recordsource existe :))
Towers
Messages postés
37
Date d'inscription
samedi 2 février 2008
Statut
Membre
Dernière intervention
10 mai 2012
3
30 juil. 2008 à 11:09
30 juil. 2008 à 11:09
Déjà merci de ta réponse talrashha,
ensuite j'ai essayé ta méthode, en simplifiant les données pour ne pas tout tester en un seul coup.
Le problème est que je ne peut pas modifier la propriété Recordset de "Etat2" lorsque celui-ci a été ouvert :
Mon message issu du gestionnaire d'erreurs :
Si j'enlève le gestionnaire d'erreur alors VBA bloque sur la ligne "Me.RecordSDource = ..."
Ce qui me semble étonnant c'est que je n'ai pas cette erreur lors de l'ouverture de "Etat1" alors que dans "Etat1" : "Report_Open()", j'ai la ligne : Me.RecordSource = strSQL
Pour indication, voici mon code qui plante
ensuite j'ai essayé ta méthode, en simplifiant les données pour ne pas tout tester en un seul coup.
Le problème est que je ne peut pas modifier la propriété Recordset de "Etat2" lorsque celui-ci a été ouvert :
Mon message issu du gestionnaire d'erreurs :
Erreur 2191 pendant le chargement de "Etat2" : Impossible de définir la propriété Source en mode Aperçu avant impression ou après le début de l'impression
Si j'enlève le gestionnaire d'erreur alors VBA bloque sur la ligne "Me.RecordSDource = ..."
Ce qui me semble étonnant c'est que je n'ai pas cette erreur lors de l'ouverture de "Etat1" alors que dans "Etat1" : "Report_Open()", j'ai la ligne : Me.RecordSource = strSQL
Pour indication, voici mon code qui plante
Private Sub Report_Open(Cancel As Integer) On Error GoTo Err_Report_Open 'Code à placer au chargement du sous-état : Dim s As String Dim d As String 'Pour simplifier, on ne récupère pas encore la date : s = "#2008/07/28#" Me.RecordSource = "SELECT RQT.dateRendements, RQT.numMetier, " & _ "RQT.refCampagne, RQT.refArticle, RQT.descriptionArticle, " & _ "RQT.rendementA, RQT.rendementB, RQT.rendementC, " & _ "RQT.rendementD, RQT.rendementE, RQT.rendementM " & _ "FROM rqt_Rdmts_Details AS RQT " & _ "WHERE RQT.numMetier = [États]![Etat1]![txtMetier] " & _ ";" '"AND RQT.dateRendements >= " & s & ";" Exit_Report_Open: Exit Sub Err_Report_Open: MsgBox "Erreur " & err.Number & _ " pendant le chargement de ""Etat2"" : " & err.Description Resume Exit_Report_Open End Sub
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 391
30 juil. 2008 à 11:27
30 juil. 2008 à 11:27
Bonjour Towers
Dans ton code, tu as un ; de trop entre la condition WHERE et la condition AND
Cela peut-être la raison de ton erreur.
A plus
Dans ton code, tu as un ; de trop entre la condition WHERE et la condition AND
Me.RecordSource = "SELECT RQT.dateRendements, RQT.numMetier, " & _ "RQT.refCampagne, RQT.refArticle, RQT.descriptionArticle, " & _ "RQT.rendementA, RQT.rendementB, RQT.rendementC, " & _ "RQT.rendementD, RQT.rendementE, RQT.rendementM " & _ "FROM rqt_Rdmts_Details AS RQT " & _ "WHERE RQT.numMetier = [États]![Etat1]![txtMetier] " & _ "AND RQT.dateRendements >= " & s & ";"
Cela peut-être la raison de ton erreur.
A plus
Towers
Messages postés
37
Date d'inscription
samedi 2 février 2008
Statut
Membre
Dernière intervention
10 mai 2012
3
30 juil. 2008 à 11:29
30 juil. 2008 à 11:29
Non si tu regarde bien mon code j'ai mis un apostrophe ' au début de la ligne dont tu parle, pour justement ne pas avoir une requête SQL simpliste et m'occuper uniquement du problème de l'écriture dans "Recordset"
30 juil. 2008 à 12:06
Dans Etat2 : Report_Open()
Ainsi je ne touche plus à RecordSource mais j'agis directement sur la requête, ce qui ne pose pas de problème...
Merci encore (j'aurais spurement d'autres problèmes mais m'avoir aidé là-dessu, ça m'enlève une sacré épine du pied), il me reste à régler encore d'autres soucis mais c'est secondaire à mon avis.
30 juil. 2008 à 12:10
A plus