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 à 14:53
Bonjour PCPT,
Sont incorrects à moitié seulement, je pense !
En fait ce qui m' interessais moi dans l' histoire c' était pas de passer la valeur 800 en paramètre,mais de voir si l' argument p sera pris ou pas comme étant la variable publique donc déjà déclarée et typée.
Là tu avais raison sur le fait qu' un argument non typé sera implicitement variant.
Je reconnais que ça je le savais déjà, mais sur le moment je me suis lancé dans une explication du ByRef un peu hasardeuse.En plus j' ai confondu la valeur par defaut.
Mais ça , ça s' explique par le fait que je ne procède jamais de la sorte.
Je ne passe jamais une variable publique en paramètre, et je n' utilise jamais ni ByRef ni ByVal.Les puristes pourront dire ce qu' ils veulent, moi ça ne m'a jamais posé problème.
En résumé, pour l' implicitement variant tu avais explicitement raison.
Bonne fin de journée.
PS: Avouer aussi que coté erreurs de frappes,
ça été un festival ..
Alors si quelqu' un fait une recherche sur Erreur de frappes , ByRef - ICI
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 16 sept. 2008 à 16:27
Au fait PCPT, tu as faussé le problème en jouant sur le type.
Non non non !
Il faudra garder le même type et prouver que le nom de la variable n' a pas d' importance.
Alors analyses le but de ceci:
Option Explicit
Dim p As Byte
Sub test(p)
p = 38
End Sub
Private Sub Form_Load()
test p
MsgBox p
End Sub
Comment expliquer que la valeur de p est maintenant 38 ?
Normal me direz-vous, la sub aurait bien pu s' ecrire
Sub test()
p = 38
End Sub
ça c' est vrai, et c' est se que je préconise.
Mais pourquoi 38 n ' est pas attribué à l' argument p ,qui variant ou pas, ne change rien au fait que c' est ma variable qui change ?
D' un autre coté, l' erreur dépassement de capacité
Sub test2(p)
p = 256
End Sub
est une preuve que c' est ma variable publique qui est prise en compte.
C' est elle aussi qui change dans
Sub test(p As Byte)
p = 38
End Sub
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 16 sept. 2008 à 16:39
OH ! la cata !
Désolé, je reposte.
Au fait PCPT, tu as faussé le problème en jouant sur le type. Non non non ! Il faudra garder le même type et prouver que le nom de la variable n' a pas d' importance.
Analyses le but de ceci:
Option Explicit
Dim p As Byte
Sub test(p)
p = 38
End Sub
Private Sub Form_Load()
test p
MsgBox p
End Sub
Comment expliquer que la valeur de p est maintenant 38 ? Normal me direz-vous, la sub aurait bien pu s' ecrire
Sub test()
p = 38
End Sub
ça c' est vrai, et c' est se que je préconise. Mais pourquoi 38 n ' est pas attribué à l' argument p ,qui variant ou pas, ne change rien au fait que c' est ma variable qui change ?
D' un autre coté, l' erreur dépassement de capacité
Sub test2(p)
p = 256
End Sub
est une preuve que c' est ma variable publique qui est prise en compte. C' est elle aussi qui change dans
Sub test(p As Byte)
p = 38
End Sub
je ne sais as ce que tu en penses mais je commence à me redonner raison
<hr />
[] Ce qui va sans dire. va mieux en le disant.
<hr />
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 16 sept. 2008 à 17:09
arrête de t'emberlificoter avec de faux tests.....
test p
tu appelles ta fonction ou procédure avec ta variable public en argument BYREF, c'est normal qu'elle soit modifiée, même si ton argument s'appelait v pour v = 38 çà serait la même chose....
<hr size="2" width="100%" />Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp