ADO et la méthode Find

cboin Messages postés 9 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 10 janvier 2007 - 13 sept. 2005 à 10:21
cboin Messages postés 9 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 10 janvier 2007 - 13 sept. 2005 à 16:36
Bonjour à tous.

j'avance tout doucement dans l'apprentissage de l'utilisation d'ADO sous VB6 et je souhaite comprendre un message d'erreur qui m'arrive avec l'utilisation de la commande Find :

Voici le code :
frm_Contenu_Commande.Adodc1_rqt_Contenu_Commande.Recordset.Find ("[Id_Commande] = " & Numero_Cde)

Voici le message d'erreur :
Informations sur la colonne clé insuffisantes pour la mise à jour ou le rafraîchissement.

Pourtant : la Variable Numero_Cde est non nulle.
Je sais en revanche que la commande pour laquelle Id_Commande = Numero_Cde n'existe pas dans la table mais d'après ce que j'ai lu sur ce forum : la commande "Find" place le Recordset sur EOF ou BOF si elle ne trouve pas l'enregistrement vérifiant le critère de recherche donc je ne comprends pas ce qui se passe...
A l'origine, je souhaite effectuer un filtre dans une table qui associe des Id d'article et des Id de commande pour afficher dans une grille les articles de la commande sélectionnée au préalable. Le problème se pose quand je n'ai pas d'article associé à la commande dans cette table. La propriété filter génère une erreur si la commande n'existe pas donc je voulais utiliser Find pour vérifier l'existance et ensuite tester Recordset.EOF ou Recordset.BOF pour savoir que je suis dans le cas d'une commande vierge mais je galère vraiment...

Quelqu'un peut-il m'éclairer ?

Merci d'avance

Charles

2 réponses

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
13 sept. 2005 à 15:04
Salut, en fait je pense que tu dois avoir une colonne indiquant le N° d'index, je pense que ton mode d'insersion ne dois pas être bon du coup VB ajoute une ligne sans créer le nouveau numéro d'index. regarde du côté des fonctions : ADO/DAO - .addnew .update


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]&
0
cboin Messages postés 9 Date d'inscription vendredi 2 septembre 2005 Statut Membre Dernière intervention 10 janvier 2007
13 sept. 2005 à 16:36
Tout d'abord merci pour ta réponse.

En fait, j'ai regardé du côté de la clé primaire et je me suis rendu compte d'une chose :
je n'avais pas ce problème lorsque je faisais un filtre sur une clef primaire...
La différence entre un champ "clé" et un champ "non clé" c'est que le champ "clé" est indexé (pour la recherche et les filtres). J'ai donc indexé le champ "non clé" sur lequel je souhaitais faire mon filtre et ça fonctionne : plus besoin de savoir si oui ou non cette commande existe : le filtre positionne le recordset sur EOF s'il ne trouve pas d'enregistrement et ma grille s'affiche vide (exactement comme je voulais)

Merci encore

A bientôt

Charles
0
Rejoignez-nous