harmedevil
Messages postés16Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention16 septembre 2008
-
15 sept. 2008 à 21:51
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
16 sept. 2008 à 17:09
Bonjour à tous ^^,
je vous explique mon problème!
Je suis débutant sur ADO ... Dans un projet je dois parcourir un recordset et faire une reherche voila comment g procédé: g crée une fonction dans le module pour pouvoir l'appeler dans tout le projet comme suit:
records est le recordset et x l'élément recherché
Public Function rechmat(records, x) As Boolean
records.MoveFirst
rechmat = False
While records.EOF = False
If Trim(x) = Trim(records!Matricule) Then
rechmat = True
Exit Function
Else
records.MoveNext
End If
Wend
End Function
cela marche tres bien cependant je voudrais faire une fonction qui puisse me servir pour n'importe quel element, po seulement "Matricule"!!!! g essayé ceci mais ca ne marche po :
Public Function rechmat(records, x, elmt) As Boolean
records.MoveFirst
rechmat = False
While records.EOF = False
If Trim(x) = Trim(records!elmt) Then
rechmat = True
Exit Function
Else
records.MoveNext
End If
'Wend
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 16 sept. 2008 à 02:00
Ok !
Maintenant fais exactement ceci. Et à la lettre !
Public Function RECHERCHER(xValeur As Variant, xChamp As String) _
As Boolean
rse.MoveFirst
rechmat = False
Do While Not rse.EOF
If x = rse.Fields(xChp) Then
rechmat = True
Exit Function
End If
rse.MoveNext
Wend
End Function
Ensuite places un ButtnCommand dans ton formulaire
et nommes le cmdRecherche
Dans l' événement Click
Private Sub cmdRecherche
Dim Valeur As Variant
Valeur=Text(1).Text
If Rechercher(Valeur,"Matricule")=True Then
MsgBox "Trouvé"
Else
MsgBox " Introuvable"
End If
End Sub
Si ça marchen fais une autre recherche dans le champ Nm
Private Sub cmdRecherche
Dim Valeur As Variant
Valeur=Text(1).Text
If Rechercher(Valeur,"Nom")=True Then
MsgBox "Trouvé"
Else
MsgBox " Introuvable"
End If
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 15 sept. 2008 à 22:41
Salut,
EDIT....
tu as reposté mais ce n'était pas plus lisible, je reposte ton message ;)
<hr size="2" width="100%" />
Bonjour à tous ^^, je vous explique mon problème!
Je suis débutant sur ADO ...
Dans un projet je dois parcourir un recordset et faire une reherche voila comment g procédé:
g crée une fonction dans le module pour pouvoir l'appeler dans tout le projet comme suit:
records est le recordset et x l'élément recherché
Public Function
rechmat(records, x)
As Boolean
records.MoveFirst rechmat = False
While records.EOF = False
If Trim(x) = Trim(records!Matricule) Then
rechmat = True
Exit Function
Else
records.MoveNext
End If
Wend
End Function
cela marche tres bien cependant je voudrais faire une fonction qui puisse me servir pour n'importe quel element, po seulement "Matricule"!!!!
g essayé ceci mais ca ne marche po :
Public Function
rechmat(records, x, elmt)
As
Boolean
records.MoveFirst
rechmat = False
While records.EOF = False
If Trim(x) = Trim(records!elmt) Then
rechmat = True
Exit Function
Else
records.MoveNext
End If
Wend
End Function
Si quelqu'un a une petite idée ^^ merci d'avance.
<hr size="2" width="100%" />
tu aurais pu faire un effort de français....
le TYPAGE n'est pas facultatif.....
si ELMT est un STRING, ce n'est pas
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 15 sept. 2008 à 22:52
"je voudrais faire une fonction qui puisse me servir pour n'importe quel element"
Il suddit alors de passer le nom du champ en âramètre
Public Function rechmat(records As RecordSet, cChp As String , x As String) As Boolean
records.MoveFirst
rechmat = False
While records.EOF = False
If Trim(x) = Trim(records.Fields(xChp)) Then
rechmat = True
Exit Function
Else
records.MoveNext
End If
Wend
End Function
Seulement voilà :
Cet exemple n' est valable que pour un champ type string.
Pour avoir une function valable pur n' importe quel type de champ,
Il faudra passr l' argument x en variant et faire abstractio
de Trim..
Public Function rechmat(records As RecordSet, cChp As String, x As Variant) As Boolean
records.MoveFirst
rechmat = False
While records.EOF = False
If x = records.Fields(xChp) Then
rechmat = True
Exit Function
End If
records.MoveNext
Wend
End Function
Autre façon de faire: Utiliser le numéro ordinal du champ
au lieu de son nom.
Public Function rechmat(records As RecordSet, cChp As Integer x As Variant) As Boolean
records.MoveFirst
rechmat = False
While records.EOF = False
If x = records.Fields(xChp) Then
rechmat = True
Exit Function
End If
records.MoveNext
Wend
End Function
<hr />
[] Ce qui va sans dire. va mieux en le disant.
<hr />
Vous n’avez pas trouvé la réponse que vous recherchez ?
harmedevil
Messages postés16Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention16 septembre 2008 15 sept. 2008 à 23:04
Je suis désolé j'utilise Opera c'est pourquoi je ne voyais pas le plugin de word...
Je tiens a vous remércier d'avoir réponsu ci vite c'est très gentil ^^
Je vais peut etre abuser mais pour l'appelle je fais comment parsqu'il me sort une erreur " Byref argument type mismatch" !!
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 16 sept. 2008 à 00:34
Supposons que tu cherches le Matricule 208 et que ta fonctio s' appelle REXCHERCHER
tU L4 APPELLE COMME CECI/
iF rECHERCHER(rs,"Matricule",208)=True Yjen
<Traitement>
Else
MsgBox "...Introuvable !"
End If
Remarques:
Si ton recordset est publique, il n' est pas necessaire
de le passer en paramçtre.
Essayes de construire ta fonction ainsi:
Public Function RECHERCHER(XChp As String, x As Variant)
As Boolean
harmedevil
Messages postés16Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention16 septembre 2008 16 sept. 2008 à 00:47
Oh c'est déja un grand effort de prendre le temps de lire mes bétises!!! :)
c encore trs gentil a toi ... cempendant l'interetde ma fonction et de comparer par exemple le matricule(qui sera sais au clavier) avec un autre qui fera parti de l'élément Matricule d'une table.
Private Sub Text1_Change(Index As Integer)
If rechmat(rse, Text1(1), Matricule) = True Then
nom.Text = rse!nom
End If
End Sub
rse: Le recordset
text1(1): Le texte a comparer (Je sais ca va sans dire... mas je l'écris vu ta sinatr lol)
Matricule: c'est l'élément avec lequel sera comparé le text1(1)
harmedevil
Messages postés16Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention16 septembre 2008 16 sept. 2008 à 00:50
des petites fautes de frappe donc je le réecris: :p
Oh c'est déja un grand effort de prendre le temps de lire mes bétises!!! :)
c encore très gentil a toi ... cependant l'interet de ma fonction est de comparer par exemple le matricule(qui sera saisi au clavier) avec un autre qui fera parti de l'élément Matricule d'une table.
Private Sub Text1_Change(Index As Integer)
If rechmat(rse, Text1(1), Matricule) = True Then
nom.Text = rse!nom
End If
End Sub
rse: Le recordset
text1(1): Le texte a comparer (Je sais ca va sans dire... mas je l'écris vu ta signature lol)
Matricule: c'est l'élément avec lequel sera comparé le text1(1)
harmedevil
Messages postés16Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention16 septembre 2008 16 sept. 2008 à 01:09
Je te montre ma fonction etma declaration mainenant:
Public Function rechmat(records As Recordset, x As Variant, y As String) As Boolean
records.MoveFirst
rechmat = False
While records.EOF = False
If x = records.Fields(y) Then
rechmat = True
Exit Function
Else
records.MoveNext
End If
Wend
End Function
Private Sub Text1_Change(ByRef Index As Integer)
If rechmat(rse, Text1(1).Text, "Matricule") = True Then
nom.Text = rse!nom
End If
End Sub
J'ai maintenant une erreur "type mismatch sur la ligne: " If rechmat(rse, Text1(1).Text, "Matricule") = True Then"
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 16 sept. 2008 à 01:24
changes le nom de ton recordset.
records est un mot réservé.
Public Function rechmat(rs As Recordset, x As Variant, y As String) As Boolean
Private Sub Text1_Change(ByRef Index As Integer)
Dim x As Variant
Si tin champ est de type String
x=Text(1).Text
Si tin champ est de type Integer
x=CInt(Text(1).Text)
If rechmat(rse, x, "Matricule") = True Then
nom.Text = rse!nom
End If
End Sub
harmedevil
Messages postés16Date d'inscriptionsamedi 16 octobre 2004StatutMembreDernière intervention16 septembre 2008 16 sept. 2008 à 01:38
Je viens d'esayer ta solution qui est tout à fit logique mais j'ai toujours l'erreur "type mismatch" sur la ligne "If rechmat(rse, x, "Matricule") = True Then". :s :s