Instruction findfirst. please help!!!!

Résolu
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 - 11 avril 2006 à 10:29
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 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.
A voir également:

45 réponses

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 12:05
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>
3
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
12 avril 2006 à 22:58
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>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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!

désolé et merci d'av
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 10:27
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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é:

'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
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 11:39
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>
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 11:48
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>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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...
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 12:07
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>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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??

Thanks Gracias Merci Chukran.......

penny
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
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>
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
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>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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.

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

hadj Ibn Penny
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
13 avril 2006 à 13:20
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>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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...!!!
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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

Zarbi!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
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>
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
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??

a+
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
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>
0
Rejoignez-nous