cs_Battant
Messages postés11Date d'inscriptionlundi 21 avril 2003StatutMembreDernière intervention19 novembre 2003
-
20 août 2003 à 22:52
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDerniè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)
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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.
cs_Battant
Messages postés11Date d'inscriptionlundi 21 avril 2003StatutMembreDernière intervention19 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
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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.