Méthode find sur un recodset

CochonPerdu Messages postés 42 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 12 août 2003 - 28 mai 2002 à 12:20
tony_mc Messages postés 1 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 25 juillet 2005 - 25 juil. 2005 à 15:37
Comment se positionner sur un enregistrement avec un recordset ? avec MonRecodset.find par exemple ?

Et pendant qu'on y est, comment se positionner sur un enregistrement qui resseble à un mot.

Par exemple, je taperais "tre" dans un champs texte et le recodset se placerait sur l'enregistrement "trefonds".

9 réponses

cs_jym Messages postés 115 Date d'inscription lundi 31 décembre 2001 Statut Membre Dernière intervention 15 avril 2014
28 mai 2002 à 15:03
bjr,

code1.Recordset.Find "repere_code1=" & co1

positionne le contrôle ado sur l'enregistrement dont le champ "repere_code_ est égal au contenu de la variable "co1" . aatention la variable de recherche et les données du champ doivent être de même type.

pour rechercher qq chose qui s'en approche, il faut uitliser l'argument like. En VB (et pour pas faire comme tout le monde bien sur...) le "joker" est remplacé par le caractère %.

j'ai pas utilisé like avec find mais ça doit passer pareil qu'avec une requête normale

il est important de bien positionner aussi les apostrophes qui délimitent les textes. la syntaxe sql est hyper pointilleuse et des espaces ou des car manquants ou accolés de trop ne fonctionent pas.

requete = "select * FROM document WHERE "

...
plus loin dans le code aprsè avoir assemblé les différentes variables qui composent la requête :
...

requete = requete & " chemin LIKE " & "'%" & repertoire & "%'"

le format réel c'est donc

select * from nomdetable WHERE nom_de_champ LIKE '%partie_recherchée'%

bon code

jym
0
CochonPerdu Messages postés 42 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 12 août 2003
28 mai 2002 à 15:29
ça, c'est de la réponse ! C'est presque un cours complet.
merci (je mettrais un smiley si ça ne buggait pas)
0
CochonPerdu Messages postés 42 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 12 août 2003
28 mai 2002 à 18:05
Est ce que la méthode find fonctionne avec deux critères ?

j'ai mis :
adoPrimaryRS.Find "ArtCodeArticle=" & PublicCodeArticle & " AND LalNumGM=" & PublicNumGM
et:
adoPrimaryRS.Find "ArtCodeArticle=" & PublicCodeArticle & ", LalNumGM=" & PublicNumGM

mais il n'a pas l'air d'aimer

Il met comme erreur : "Arguments are of the wrong type, are out of the range, or are in conflict with another"

Pourtant, les types correspondent...
0
CochonPerdu Messages postés 42 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 12 août 2003
29 mai 2002 à 16:08
Encore une question :
J'ai appliqué la méthode find et ça marche bien. Mais comment détecter si aucun enregistrement n'est trouvé ?

Héhé, ça va bientôt devenir un véritable petit cours sur la méthode find :-p
0

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

Posez votre question
cs_jym Messages postés 115 Date d'inscription lundi 31 décembre 2001 Statut Membre Dernière intervention 15 avril 2014
7 juin 2002 à 23:09
BJR,

j'ai pas essayé de passer d'autre arguments mais à priori, à part des suspission de syntaxe je vois pas pourquoi ça parcherait pas..

pour trouver le suivant c'est findnext.

perso j'utilise la méthode find sur des clés uniques comme par exemple un code article ou un index connu donc il es tunique et me permet de localiser un enregistrement pour retrouver seulement les données. apr exemple j'ai un code article et je cherche ce que c'est que cet article (celui qu'à commandé le client). la méthode find me positionne sur cet article et un seul. du reste si la base est un peu grande le rst doit être avec le paramètre "recherche en avant seulement". de là j'ai accès au produit lui même qui est dans le rst(2) de la ligne (par exemple).

reste à écrire une partie contrôle pour relancer la recherche.

avant avec DAO on pouvait écrire

rst.recordset.findfirst

code

do until rst.recordset.eof
rst.recordset.findnext
code....
rst.recordset.movenext
loop

mais depuis ADO c'est différent et j'avoue que c'est plus simple finalement avec les requêtes. sur une table ou une base tu appliques une requête qui te retoune TOUS les enregistrments qui correspondent à ton critère.

reste plus qu'à les lire et exploiter les contenus

do until

movenext
loop


A+

jym
0
sonoboss Messages postés 178 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 2 octobre 2007
28 juin 2002 à 14:32
Woooooo des Donuts!!!

Moi ca fait 2 semaines que je cherche comment appliquer 2 critères à 1 méthode Find et je suis pas plus avancé... apparemment ca existe pas... Pitié Help ME!!!!!!!!
0
cs_asa Messages postés 2 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 10 février 2005
10 févr. 2005 à 04:00
Extract from Msdn
"The first parameter is the only required argument for the Find method. All of the other arguments are optional and have default values. This first argument is a single-condition where clause.The construction of a single-condition where clause consists of a column name (the database field), an operator (greater than or equal, for example), and a literal value. "

Le find des recordset semble donc etre limite a un seul critere ....

Tony
0
cs_asa Messages postés 2 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 10 février 2005
10 févr. 2005 à 04:14
Une piste ....

En fait avec DAO tu pouvais mettre plusieurs criteres.
Avec ADO ce n + le cas mais ... le moyen de contourner facilement:
Tu utilises recordset.filter ou sort
Ex
Recordset.Filter= "critere1 and critere2"

cf source http://www.vbfrance.com/code.aspx?ID=4724
+ msdn
"So far, each of the criteria shown in the examples has been based on a value of a single field. However, with DAO Find methods, the Criteria argument is like the WHERE clause in an SQL statement and can contain multiple fields and comparison operators within the criteria. This is not the case with the ADO Find method. The ADO Find method's Criteria argument is a string that contains a single field name, comparison operator, and value to use in the search. If you need to find a record based on multiple fields, use the Filter property (see "Filtering and Sorting Data in a Recordset Object" later in this chapter) to create a view of the Recordset object that contains only those records that match the criteria."

Tony
0
tony_mc Messages postés 1 Date d'inscription dimanche 12 novembre 2000 Statut Membre Dernière intervention 25 juillet 2005
25 juil. 2005 à 15:37
Bonjour à tous

Je cherche à utiliser la technique find / seek (ou une technique similaire de recherche de caractère dans une zone de liste ) avec un formulaire de page web...
en ASP, JSP, JAVA ..?

Quelqu'un sait comment s'y prendre ?

Merci d'avance.

Tony

broyeztony@yahoo.fr
0
Rejoignez-nous