Methode find [Résolu]

Signaler
Messages postés
38
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 novembre 2007
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour, je suis sous vb6, j'utilise une base access

je voudrais verifier si un champs est deja present dans la table avan de l'inserer, je n'arive pas a bien utiliser la methode find malgré mes recherches sur les forums;
C'est la premiere condition de l'iteration qui ne fonctionne pas!
Comment verifier si le prod existe dja avc find

Set Cn = New ADODB.Connection


Cn.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=H:\poly.mdb"
Set Rs = New ADODB.Recordset


Rs.ActiveConnection = Cn


Rs.Open "select * from FDS", Cn, adOpenDynamic, adLockOptimistic

do until Rs.EOF=true

if Rs.find ("LIBELLE")="' & frmfiche.text2.text & '" =true then
msgbox("Le prod existe deja")
else


Rs.AddNew
Rs.Fields("CODE_PRODUIT") = frmfiche.lblnumdoc.Caption
Rs.Fields("LIBELLE") = frmfiche.Text2.Text
Rs.Update
Rs.Close
end if

end sub

merci de vottre aide

13 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Salut,


En regardant un peu, j ai vu qu'il faut utiliser Find De la maniere suivante:

Rs.Find "LIBELLE Like '"& frmfiche.text2.text & "' (pas besoin de if)

Pour tester le resultat de la recherche:

If Err.Number Or Rs.BOF Or Rs.EOF Then
Err.Clear
MsgBox "Il n'existe pas "
'Ajout de ton nouveau Champ
Else
MsgBox Rs!LIBELLE
End If

Voila en esperant avoir pu t'aider.
@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

Messages postés
38
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 novembre 2007

lu, je vais essayer et te dir ca de suite ,
merci
Messages postés
38
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 novembre 2007

Ca semble fonctionner correctement, c ce que je cherchait merci a toi! t'an que ty ai tu pourrai m'expliker brievement :

If Err.Number
Err.Clear

merci
cu'
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Salut,

Err: Contient les informations sur les erreurs d'execution
Err.number : Renvoie ou définit une valeur numérique indiquant une erreur
Err.clear: Remet a zero Err.number

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
38
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 novembre 2007

ok merci bien

a plus
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
P...n de M...e ca a encore foire.

Je disais:
De rien le forum est la pour ca.
Si tu estime que otn probleme est resolu n'heite pas a cliquer sur reponse acceptee sur le post qui t'a aider

Bonne journee

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
38
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 novembre 2007

dites moi toujours dans mon code pourquoi l'ecrasement (remplacement) n'est pas possible?qu'est ce qui cloche

Rs.Find "LIBELLE Like '" & frmfiche.Text2.Text & "'"


'Err.Number: Renvoie ou définit une valeur numérique indiquant une erreur
If Err.Number Or Rs.BOF Or Rs.EOF Then 'Contient les informations sur les erreurs d'execution
Err.Clear ' Remet a zero Err.number
Rs.AddNew
Rs.Fields("CODE_PRODUIT") = frmfiche.lblnumdoc.Caption
Rs.Fields("LIBELLE") = frmfiche.Text2.Text
Rs.Fields("INDICE") = frmfiche.Text1.Text

'Ajout de ton nouveau Champ
Else
MsgBox ("La fiche " & frmfiche.Text2.Text & " existe deja")
rep = MsgBox("Voulez-vous le remplacer", vbYesNoCancel + vbInformation)
If rep = vbYes Then
Rs.AddNew
Rs.Fields("CODE_PRODUIT") = frmfiche.lblnumdoc.Caption
Rs.Fields("LIBELLE") = frmfiche.Text2.Text
Rs.Fields("INDICE") = frmfiche.Text1.Text

End If
End If

merci de m'aider
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Re,

Est ce que le code te donne des erreurs, ou est ce que le remplacement ou l'ajout ne se fait pas.

Si pas d'erreur, refais tu bien le Rs.update que tu faisais avant.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
38
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 novembre 2007

alors, le code me genere une erreur kan je tente d'enregistrer au niveau du Rs.update, il m'indique risque de doublon, modif non effectue...
kan je l'enleve il n'y a pa d'erreur mai l'ajout n'est pa effectuer!
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Re,


Lors de l'ecrasement. c est normal car tu utilise la methode .AddNEw qui ne remplace pas mais.. Ajoute. donc ton code tel qu il est a present Ajoute meme si il a trouve qqch.

Il faudrait plutot essayer de retirer le rs.addNew apres le If rep = VbYes

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
38
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 novembre 2007

re

mille fois merci de ton aide ca fonctionne
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Re,
Mais y a pas de quoi, merci a toi pour le reponse acceptee

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée