penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 2007
-
11 avril 2006 à 10:29
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 2012
-
14 avril 2006 à 15:22
Bonjour tout le monde!
J'ai un petit probleme j'ai crée des listes modifiables dans un formulaire pour les deux premiers qui sont des valeurs numériques j'arrive à filtrer les valeurs de manière à disposer de la ligne voulue.
Ensuite les deux autres sont du type texte qui ne fonctionne pas j'ai l'erreur suivante:
Microsoft jet ne reconnait pas 'articleBT' comme nom de champ ou expression correcte.
Voila le code:
Private Sub ModifiableBT_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[BT]=" & Me![ModifiableBT]
Me.Filter = "[BT]= " & Me![ModifiableBT]
Me.FilterOn = True
End Sub
J'ai essayé de faire Cstr histoire d'être sur qu'il le considère en texte toujours l'erreur donc si quelqu'un peut m'aider.
Merci d'avance.
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 09:53
ben on ne me répond jamais donc je sasi pas si ca passait ou pas??!! c'est par mauvaise foi mais je sais jamais sous quelle rubrique la mettre!!!
si jamais tu peux me répondre ca fait des jours que je bloque dessus!
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 11:33
merci !
j'ai fait un filtre sur un controle crée avec Me.filter qui ne marche pas j'ai l'erreur "microsoft jet ne reconnait pas "expr" comme un champ ou expression valide.
je trouve cela bizarre étant donné que j'ai fait 2 autres qui marchent bien dans le meme form
je pensai que c'etait a cause du format texte mais je ne pense pas
voila le code associé:
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 11:50
je dis expr pour etre plus claire mon modifiable possede deux valeurs EXXO et EXXC quand je veu filtrer sur EXXo par exemple il me donne l'erreur "microsoft jet ne reconnai pas exxo comme champ ou expression valide.
le filtre doi me sortir tous les enregistrements avec exxo dans cet exemple.
actuellemnt quand je supprime la ligne findfirst,
Private Sub Modifiable87_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
Me.Filter = "[Ordo]= " & Me![Modifiable87]
Me.FilterOn = True
End Sub
le filtre s'applique que pr exxo et cela quelque soit la valeur entrée (meme qd je lui met exxc il me sort du exxo??)
bizarre...
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 12:50
encore merci rvblog c'était ca mon soucis ca marche!
autre petite question peut on faire des filtres sur des controles qui sont crées du genre avec > ou < ....
MR access les reconnait t'il si on fait un recordset avant??
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 12:53
du style pr etre plus explicite, si écart mtbur est un controle zone de texte crée:
Dim critere As Integer
critere = InputBox("entrez le seuil souhaité")
Dim rs As Object
Set rs = Me.Recordset.Clone
Me.Filter = "[écartMTBUR] >= " & "critere"
Me.FilterOn = True
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 13 avril 2006 à 13:01
je sais, je sais... :)
ben oui, on peut faire tout ce qu'on peut faire dans une clause WHERE d'un SELECT(attention quand même! on peut aussi faire des bêtises dans un SELECT).
mais je ne suis pas sûr de bien comprendre ta question.
"sur des controles qui sont crées du genre avec > ou <", bon, il y a des contrôles créés, ça c'est fait, on n'en parle plus (ça embrouille la question).
Maintenant, il y a un clone de recordset, et ce recordset a peut-être été créé avec des opérateurs dans le but de filtrer les enregistrements d'une table (ou d'un autre recordset). Bon, ça reste un recordset quand même (il n'existe pas encore de notion d'héritage de risque ou de ruse de sioux :) ).
La Chukran A La Wuajib
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 13 avril 2006 à 13:09
Je n'avais pas refresh, pardon!
ça marche, mais comme ça :
- si [écartMTBUR] est de type numérique :
Me.Filter = "[écartMTBUR] >= " & critere
- si [NomMTBUR] est de type chaine : Me.Filter "[NomMTBUR] ' " & critere & "'"
- si [DateMTBUR] est de type date : Me.Filter "[NomMTBUR]#" & critere & "#"
! pas de guillemets autour de critère (tu as écrit & "critère", en faisant cela, tu lui demandes de comparer la valeur du champ écartMTBUR avec la chaine de caractères "critere", et non pas avec le contenu de la variable critere )
et pis, un dernier pour la route, pas d'accent dans les identificateurs (les noms de champs entre autres), Access le tolère, mais pas tous les autres, tu mets en péril toute ta descendance :)
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 13:13
pour etre clair mon cher ami!
j'ai crée deux controles nommés écart mtbur et ecartmtbf sur lesquels quand je clik sur un bouton me filtre les enregistrements selon la valeur rentré.
le hic du hic trés chic :) c'est que j'ai l'impression qu'il ne reconnait plus (et cela meme aprés le famous recordset) mes deux controles crées.
Pour ppreuve quand je vais sous la fenetre access et que je vais voir le filtre avancé et que je l'ouvre en mode création ces controles ne font pas parti de la liste des controles du form.
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 13:20
l'erreur est contagieuse apparemment j'avais pas refresh too!!
j'ai lu tes conseils avisés mais le soucis c'est que le diable d'access ne me donne pas d'enregistrements pour n'importe quel valeur rentrée il ne trouve rien, nothing, nada, niet...!!!
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 13:26
dans la fenetre filtre tri avancé tu peu voir les controles du form dans une liste et l'équivalent de la requete proposé juste en dessous. ca me permet de vérifier si ca a bien fait ce que je voulais.
Le hic c'est pluto que pour n'importe quel valeur entré le filtrage me donne zero enregistrement cce qui n'est pas normal
Private Sub CriticalRCN_Click()
Dim critere As Integer
critere = InputBox("entrez le seuil critique souhaité en %")
Dim rs As Object
Set rs = Me.Recordset.Clone
Me.Filter = "ecartMTBUR >= " & critere
Me.FilterOn = True
End Sub
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 13 avril 2006 à 13:40
non, je ne vois pas de liste de contrôles du formulaire (je vois la table et la liste déroulante des sources disponibles dans le formulaire [ce ne sont pas les champs, la preuve, l'*]), mais ce n'est pas grave.
- Dans la fenêtre de tri avancé, fais ta modif, et sans quitter, cliques droit et choisis "enregistrer comme requête" en donnant un nom à la requête.
- Fermes la fenêtre de filtre.
- Vas dans la fenêtre Base de Données, Requetes.
- Ouvre ta requête en modification, et dans le menu d'Access, choisis Affichage>>Mode SQL. Tu verras là comment ce présente la requête que construit ton filtre. Etudies la, et trouves ce qui ne va pas (tu peux aussi l'exécuter). Ensuite, déduis-en ce que tu as compris, ou si tu ne comprends pas mieux, postes la ici.
PS: je disais pas d'accent, mais si tu fais la modification dans le code, on est bien d'accord qu'il faut la faire de partout (nom du champ dans la table, autres requêtes ou filtres...)?
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
penny05
Messages postés105Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention18 janvier 20072 13 avril 2006 à 13:55
good idea!
bon j'ai vu en mode sql il fait un truc du genre:
select * from "tous les champs du form" sans le champ ecartmtbur
where (((Periodic_database.[ecartMTBUR])>=25));
je lance la requete aucune donnée ne sort normal si le champ ecartmtbur n'i figure pas je pense non??
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 13 avril 2006 à 14:26
"select * from "tous les champs du form" sans le champ ecartmtbur
where (((Periodic_database.[ecartMTBUR])>= 25));", je ne comprends pas bien!
si je voyais " select "toutes les champs du form" from la source du form", je comprendrais, mais là non.
Si c'est une faute de frappe que tu viens de faire, alors ce n'est pas pareil. Tu n'est pas obligé en SQL d'avoir, dans la sélection (le select) les champs qui sont dans le filtre (la clause where).
moi, j'ai testé :
un formulaire, avec, pour source de données, une requete qui filtre une table (donc SELECT * FROM Machin WHERE Truc>1), une liste déroulante modifiable qui, réagissant à l'AfterUpdate, déclenche un filtre de plus (Filter = "Truc<5"), et jusque là, cela fonctionne. Le filtre obtenu est du genre :
SELECT *
FROM [SELECT * FROM Machin WHERE Truc>1; ]. AS Formulaire4
WHERE (((Formulaire4.Truc)<5));
Je modifie le filtre avancé, en ajoutant une clause de plus, j'obtiens un filtre style :
SELECT *
FROM [SELECT * FROM table1 WHERE Truc>1; ]. AS Formulaire4
WHERE (((Formulaire4.Truc)<5) AND ((Formulaire4.total)<100));
et cela fonctionne toujours (j'ai bien des enregistrements en réponse).
d'où cette question : Es-tu sûr qu'il y a des enregistrements qui correspondent à tes critères? (évidemment, cette question ne se pose que c'est une faute de frappe [cf ma remarque au début de ce message])
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>