OVH Cloud OVH Cloud

Recherche d'un enregistrement

2 réponses
Avatar
Dlonget
Bonjour

Dans mon programme je suis amen=E9 =E0 effectu=E9 une recherche=20
de valeur dans une table avec ma ou mes selection en cours:
quelle m=E9thode serait la plus rapide:
sachant:
-que je ne peux plus modifier la structure de la table=20
(qui contient -3 champs numautomatique(cl=E9)/NOM/DATE-)
-que la table contient >14000 enregistrements
-que la s=E9lection multiple s'opere par une liste d=E9roulante
-que je dois trouver s'il existe un enregistrement=20
comparable avec deux crit=E8res (NOM ET DATE)
Solutions envisag=E9s:
-Ouvrir la table comme un objet adodb.recodset et=20
boucl=E9 sur chaque valeur pour la comparer avec la /les=20
selection en cours
-Executer par du code une requete SQL et tester le=20
resultat par la m=E9thode if (recordset.BOF AND RECODSET.EOF)

J'ai test=E9 ces deux m=E9thodes mais je les trouve lourdes =E0=20
mettre en oeuvre et j'ai du mal =E0 faire le choix entre du=20
code ADO? DAO ou SQL...

Merci =E0 tous ceux qui auront le courage de me lire et plus=20
particuli=E8rement =E0 ceux qui pourront me proposer une=20
solution.
=E0 bient=F4t

2 réponses

Avatar
Jean
Je connais aussi ton problème.

- DAO est le plus lent des 3 solutions, tu fais appel au
moteur Access, et tu dois énumérer les enregistrements un
par un.

ADO est un système que beaucoup de développeur utilise
sur des bases non Access, quoi que je l'utilise plus
facilement que DAO. Il a l'avantage de gagner de la
vitesse.

SQL est le meilleur moyen de récupérer des données avec
vitesse, car tu ne t'adresse pas à Access, mais au moteur
JET en direct. Tu a l'avantage de ne faire qu'un simple
test pour s'avoir si Jet de renvoi des data.

J'utilise régulièrement SQL avec succès sur plus de
25.000 records.

Pour gagner de la vitesse, tu dois avoir des relations "1
à plusieurs " établies dans tes tables, et sourtout avoir
une cohérence de champ. J'entends par là éviter les
doublons, simplifier au maximum tes tables, et ne poser
que des champs utiles.

Voilà. @+ Jean


-----Message d'origine-----
Bonjour

Dans mon programme je suis amené à effectué une
recherche

de valeur dans une table avec ma ou mes selection en
cours:

quelle méthode serait la plus rapide:
sachant:
-que je ne peux plus modifier la structure de la table
(qui contient -3 champs numautomatique(clé)/NOM/DATE-)
-que la table contient >14000 enregistrements
-que la sélection multiple s'opere par une liste
déroulante

-que je dois trouver s'il existe un enregistrement
comparable avec deux critères (NOM ET DATE)
Solutions envisagés:
-Ouvrir la table comme un objet adodb.recodset et
bouclé sur chaque valeur pour la comparer avec la /les
selection en cours
-Executer par du code une requete SQL et tester le
resultat par la méthode if (recordset.BOF AND
RECODSET.EOF)


J'ai testé ces deux méthodes mais je les trouve lourdes
à

mettre en oeuvre et j'ai du mal à faire le choix entre
du

code ADO? DAO ou SQL...

Merci à tous ceux qui auront le courage de me lire et
plus

particulièrement à ceux qui pourront me proposer une
solution.
à bientôt
.



Avatar
Jean
Je connais aussi ton problème.

- DAO est le plus lent des 3 solutions, tu fais appel au
moteur Access, et tu dois énumérer les enregistrements un
par un.

ADO est un système que beaucoup de développeur utilise
sur des bases non Access, quoi que je l'utilise plus
facilement que DAO. Il a l'avantage de gagner de la
vitesse.

SQL est le meilleur moyen de récupérer des données avec
vitesse, car tu ne t'adresse pas à Access, mais au moteur
JET en direct. Tu a l'avantage de ne faire qu'un simple
test pour s'avoir si Jet de renvoi des data.

J'utilise régulièrement SQL avec succès sur plus de
25.000 records.

Pour gagner de la vitesse, tu dois avoir des relations "1
à plusieurs " établies dans tes tables, et sourtout avoir
une cohérence de champ. J'entends par là éviter les
doublons, simplifier au maximum tes tables, et ne poser
que des champs utiles.

Voilà. @+ Jean


-----Message d'origine-----
Bonjour

Dans mon programme je suis amené à effectué une
recherche

de valeur dans une table avec ma ou mes selection en
cours:

quelle méthode serait la plus rapide:
sachant:
-que je ne peux plus modifier la structure de la table
(qui contient -3 champs numautomatique(clé)/NOM/DATE-)
-que la table contient >14000 enregistrements
-que la sélection multiple s'opere par une liste
déroulante

-que je dois trouver s'il existe un enregistrement
comparable avec deux critères (NOM ET DATE)
Solutions envisagés:
-Ouvrir la table comme un objet adodb.recodset et
bouclé sur chaque valeur pour la comparer avec la /les
selection en cours
-Executer par du code une requete SQL et tester le
resultat par la méthode if (recordset.BOF AND
RECODSET.EOF)


J'ai testé ces deux méthodes mais je les trouve lourdes
à

mettre en oeuvre et j'ai du mal à faire le choix entre
du

code ADO? DAO ou SQL...

Merci à tous ceux qui auront le courage de me lire et
plus

particulièrement à ceux qui pourront me proposer une
solution.
à bientôt
.

.