Methode find

Résolu
protozorus Messages postés 38 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 novembre 2007 - 23 févr. 2006 à 09:09
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 23 févr. 2006 à 11:06
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

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 févr. 2006 à 09:28
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
protozorus Messages postés 38 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 novembre 2007
23 févr. 2006 à 09:35
lu, je vais essayer et te dir ca de suite ,
merci
0
protozorus Messages postés 38 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 novembre 2007
23 févr. 2006 à 09:45
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'
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 févr. 2006 à 09:48
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
0

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

Posez votre question
protozorus Messages postés 38 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 novembre 2007
23 févr. 2006 à 10:13
ok merci bien

a plus
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 févr. 2006 à 10:17
@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 févr. 2006 à 10:18
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
0
protozorus Messages postés 38 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 novembre 2007
23 févr. 2006 à 10:34
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
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 févr. 2006 à 10:40
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
0
protozorus Messages postés 38 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 novembre 2007
23 févr. 2006 à 10:44
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!
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 févr. 2006 à 10:55
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
0
protozorus Messages postés 38 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 novembre 2007
23 févr. 2006 à 11:00
re

mille fois merci de ton aide ca fonctionne
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
23 févr. 2006 à 11:06
Re,
Mais y a pas de quoi, merci a toi pour le reponse acceptee

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
Rejoignez-nous