Quelle est la syntaxe exacte de la méthode find ?

cs_Battant Messages postés 11 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 19 novembre 2003 - 20 août 2003 à 22:52
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 23 août 2003 à 01:51
Bonjour,

Je me trouve dans la situation suivante.

Dans une base de donnée, j'ai une table
qui s'appelle [Couleurs]. Dans cette dernière, j'ai un champ du même nom qui constitue la clé de la table. Je voudrais utiliser la méthode find de mon objet recordSet pour savoir si une couleur précise fait partie de la liste de couleurs que contient ce champ.

J'ai essayé la syntaxe suivante.

ADDrs.Find [couleur] = lngCouleur


Remarques

ADDrs et mon objet recordSet provenant du contrôl ADDC.

La comparaison se fait sur des champs valeur numérique de type long.

La variable lngCouleur contient la couleur à rechercher

Actuellement, avec cette syntaxe ainsi qu'avec toutes les autres que j'ai testées, j'ai obtenu le message d'erreur suivant.

" Arguments de type incorrects ou en dehors des limites autorisées avec une erreur dons le code et 3001.

Est-ce que quelqu'un pourrait me communiquer la syntaxe exacte de la méthode Find de l'objet recordSet ? (Avec un exemple si possible et éventuellement une explication à cette erreur)

Merci d'avance.

A bientôt

Battant

6 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 août 2003 à 01:00
ADOrs.Find "Couleur=" & CStr(lngCouleur)
Tu transmets à Find une chaine de caractère qui est en fait un e Clause "Where" SQL.

P.S. : Amusez-vous à faire <F1> sur les mot-clef, nom de methode ou de propriété qui vous embête, vous verrez qu'on trouve plein de chose !!
Christophe R.
0
tankian18 Messages postés 122 Date d'inscription lundi 21 juillet 2003 Statut Membre Dernière intervention 16 septembre 2014
21 août 2003 à 09:19
Je suis d'accord mais il faut avouer que les msdn ne sont pas très explicites par moment quand même..
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 août 2003 à 09:39
C'est une question de gout ... Et il y a souvent des exemple de code en plus !!
Christophe R.
0
tankian18 Messages postés 122 Date d'inscription lundi 21 juillet 2003 Statut Membre Dernière intervention 16 septembre 2014
21 août 2003 à 11:26
Je dis pas le contraire, elles sont TRES utiles, mais personnelement je pense que c'est pas toujours évident ;)
0

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

Posez votre question
cs_Battant Messages postés 11 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 19 novembre 2003
21 août 2003 à 23:36
Bonjour,

Je suis désolé, je pense que votre solution n'est pas la bonne. Il me semble que votre ligne de code tente de modifier le champ couleur ce qui n'est pas l'effet recherché. En effet, le mesage Modifications non effectuées[. Risque de doublon s'affiche/b].

Je ne connais pas la fonction cstr. peut-être que c'est elle qui provoque l'erreur en tentant d'affecter la valeur 0 ou une aute valeur que j'ignore à une position qui m'est inconnue. pouvez-vous m'expliquer à quoi elle sert ?

Rappelez vous que je recherche à faire la chose suivante:
- Rechercher à l'aide de find une couleur dans la liste des couleurs. Si cette dernière n'existe pas, je voudrais l'ajouter en dernière position

Merci d'avance pour votre aide.

Battant
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 août 2003 à 01:51
Cstr() convertit simplement l'argument qu'on lui transmet en chaine de caractère. En gros tu lui refile 456, et il te retourne "456". C'est juste pour pouvoir concatener la valeur recherchée contenu dans lngCouleur (j'ai donc supposé que c'était un entier long) avec la chaine contenant le début de la clause Where "Couleur =".
Enfin, cette ligne de code ne tente ABSOLUEMENT PAS de modifier le champ couleur. Le signe = n'est pas un opérateur d'affectation, mais un opérateur de comparaison. Quand je met ca :
RS.Find "Couleur=" & Cstr(lngCouleur)

en supposant que lngCouleur contienne la valeur 10, je demande au Recordset de trouver l'enregistrement dont le champ Couleur vaut 10.
Si c'est pas ce que tu veux, j'ai rien compris à ta question !!

Pour finir, je doute que ton message "Modif non effectué ! Risque de doublon .." apparaisse sur ma ligne de code. Au pire, tu pourrais avoir un "Variable objet inexistante" si ton RS est Nothing, ou un " EOF atteint" si ton RS est vide ou en fin de table, mais c'est tout !!!

ET JE MAINTIENT QU'IL SERAIT BON D'UTILISER LA TOUCHE <F1> par moment
Christophe R.
0
Rejoignez-nous