Instruction findfirst. please help!!!! [Résolu]

penny05 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 11 avril 2006 à 10:29 - Dernière réponse : rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention
- 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.
Afficher la suite 

45 réponses

Meilleure réponse
rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 12:05
3
Merci
D'accord,

ta 1ère hypothèse était la bonne, c'est un problème de chaine.
Si [Ordo] est de type chaine, écris comme ça :

Private Sub Modifiable87_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
'filtre sur la valeur du modifiable

rs.FindFirst "[Ordo]= ' " & Me![Modifiable87] & "'"
Me.Filter = "[Ordo]= '" & Me![Modifiable87] & "'"

End Sub

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>

Merci rvblog 3

codes-sources a aidé 81 internautes ce mois-ci

rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 12 avril 2006 à 22:58
0
Merci
Salut penny05,

je passais par là, j'en ai vu un autre avant, mais comme tu en mets de partout, je ne sais plus trop où répondre, et auquel répondre!

à+ (peut-être)

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
penny05 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 09:53
0
Merci
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!

désolé et merci d'av
rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 10:27
0
Merci
SAlut penny05 ,

j'espère que tu es encore là.
Si oui, décris ici sur quoi tu bloques, s'il te plait.

à toute


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
penny05 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 11:33
0
Merci
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é:

'une fois sur le modifiable

Private Sub Modifiable87_AfterUpdate()

Dim rs As Object
Set rs = Me.Recordset.Clone

'filtre sur la valeur du modifiable

rs.FindFirst "[Ordo]=" & Me![Modifiable87]
Me.Filter = "[Ordo]= " & Me![Modifiable87]

End Sub

si je clique sur une valeur du modifiable j'ai ce message d'erreur!
Merci d'av en esperant etre clair dans le probleme
rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 11:39
0
Merci
bon,

tu dis " microsoft jet ne reconnait pas "expr" comme un champ ou expression valide
" , mais je ne vois pas "expr" dans ton code. Explication?

pourquoi findfirst et filter?(le filtre devra s'appliquer aussi à ceux qui sont à supprimer avant)

essaies d'inverser les 2, voire même de ne pas findfirster.

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 11:48
0
Merci
au temps pour moi, j'ai mal lu (findfirst, filter)
mais la question expr reste posée


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
penny05 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 11:50
0
Merci
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...
rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 12:07
0
Merci
Notes bien (et l'aide le dit),

la chaine que tu mets dans FindFirst ou dans Filter est la même que pour la clause WHERE d'une requête SQL, mais sans écrire le WHERE.

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
penny05 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 12:50
0
Merci
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??

Thanks Gracias Merci Chukran.......

penny
penny05 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 12:53
0
Merci
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 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 13:01
0
Merci
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 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 13:09
0
Merci
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 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 13:13
0
Merci
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.

en esperant que t'as compris ce ke je veux dire.

hadj Ibn Penny
rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 13:20
0
Merci
il doit y avoir méprise, où vois-tu une liste des contrôles du formulaire lorsque tu es dans la fenêtre de modification du filtre avancé?


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
penny05 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 13:20
0
Merci
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 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 13:26
0
Merci
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

Zarbi!
rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 13:40
0
Merci
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 105 Messages postés mercredi 22 mars 2006Date d'inscription 18 janvier 2007 Dernière intervention - 13 avril 2006 à 13:55
0
Merci
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??

a+
rvblog 794 Messages postés vendredi 4 mars 2005Date d'inscription 12 juin 2012 Dernière intervention - 13 avril 2006 à 14:26
0
Merci
"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>

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Instruction findfirst. please help!!!! - page 2