OVH Cloud OVH Cloud

methode FIND

5 réponses
Avatar
jc2nantes
Salut...

La méthode FIND de l'objet ADO est elle une bonne solution pour effectuer la
recherche d'un enregistrement dans une base vaut il mieux utiliser une
requete SQL ? en terme de fiabilité et de rapidité sur une base de 50000
entrées.

mon exemple de code :

Dim REFsearch As String
REFsearch = "NUM = '" & IDplayer & "'"
rsADOPLAYER.Find REFsearch, , , 1
...

si vous avez mieux...

Merci

5 réponses

Avatar
Pascal B.
Bonjour JC

Personellement, j'utilise DAO au lieu de ADO; mais ça doit être pareil...

Pour trouver un enregistrement rapidement, j'utilise la méthode SEEK
mais ton Recordset doit être alors indexé.
Le résultat est pratiquement immédiat.

Exemple:

Dim RS As Recordset
Set RS = DB.Openrecordset( .... )
RS.Index = "PrimaryKey" '(Indexé sur le champ NUM, par exemple)
RS.Seek "=", IDPlayer
If RS.NoMatch then
MsgBox "Enregistrement pas trouvé"
Else
MsgBox "Enregistrement trouvé"
End If
RS.Close

"jc2nantes" a écrit dans le message de news:%23aoq%23%
| Salut...
|
| La méthode FIND de l'objet ADO est elle une bonne solution pour effectuer la
| recherche d'un enregistrement dans une base vaut il mieux utiliser une
| requete SQL ? en terme de fiabilité et de rapidité sur une base de 50000
| entrées.
|
| mon exemple de code :
|
| Dim REFsearch As String
| REFsearch = "NUM = '" & IDplayer & "'"
| rsADOPLAYER.Find REFsearch, , , 1
| ...
|
| si vous avez mieux...
|
| Merci
|
|
Avatar
jc2nantes
"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le message
de news:
Bonjour JC

Personellement, j'utilise DAO au lieu de ADO; mais ça doit être pareil...

Pour trouver un enregistrement rapidement, j'utilise la méthode SEEK
mais ton Recordset doit être alors indexé.
Le résultat est pratiquement immédiat.




Pascal,

SEEK semble en effet similaire à FIND mais FIND ne semble pas gèrer
NOMATCH... ce qui serait bien pratique!

a++
Avatar
Eric
Bonjour,

Je ne peux pas te garantir pour ADO mais en DAO la
propriété NoMatch fonctionne très bien.

La proc serait du genre:
Sub test1()
Dim sql As String, rs As Recordset, critere As String
sql = "select * from tcassette;"
Set rs = bd.openrecordset(sql)

'définition du critère
critere = "[Genre]='Policier'"

rs.FindFirst critere
While Not rs.NoMatch
Debug.Print rs!Titre_Film, rs!tarif
rs.FindNext critere
Wend

End Sub

A+
Eric
-----Message d'origine-----

"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a


écrit dans le message
de news:
Bonjour JC

Personellement, j'utilise DAO au lieu de ADO; mais ça




doit être pareil...

Pour trouver un enregistrement rapidement, j'utilise la




méthode SEEK
mais ton Recordset doit être alors indexé.
Le résultat est pratiquement immédiat.




Pascal,

SEEK semble en effet similaire à FIND mais FIND ne semble


pas gèrer
NOMATCH... ce qui serait bien pratique!

a++


.



Avatar
Eric
re,

le message précédent est hors du contexte. Sorry

Eric
-----Message d'origine-----

"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a


écrit dans le message
de news:
Bonjour JC

Personellement, j'utilise DAO au lieu de ADO; mais ça




doit être pareil...

Pour trouver un enregistrement rapidement, j'utilise la




méthode SEEK
mais ton Recordset doit être alors indexé.
Le résultat est pratiquement immédiat.




Pascal,

SEEK semble en effet similaire à FIND mais FIND ne semble


pas gèrer
NOMATCH... ce qui serait bien pratique!

a++


.



Avatar
Christophe
Bonjour,

Pour DAO il me semble que la methode seek est reservée au objet Table.
et ci dessous un extrait de la msdn

""
En général, pour des types de recherche équivalents, la méthode Seek offre
de meilleurs résultats que les méthodes Find. Cette méthode implique
toutefois que les objets Recordset de type Table suffisent à satisfaire vos
besoins.
""
Christophe Vergon

et effectivement c'est quasi instantané sur un primarykey en index.
"jc2nantes" a écrit dans le message de news:


"Pascal B." <pascbr{_AROBASE_}hotmail{_POINT_}com> a écrit dans le message
de news:
> Bonjour JC
>
> Personellement, j'utilise DAO au lieu de ADO; mais ça doit être


pareil...
>
> Pour trouver un enregistrement rapidement, j'utilise la méthode SEEK
> mais ton Recordset doit être alors indexé.
> Le résultat est pratiquement immédiat.
>

Pascal,

SEEK semble en effet similaire à FIND mais FIND ne semble pas gèrer
NOMATCH... ce qui serait bien pratique!

a++