Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pour 3stone : Gérer la liste déroulante.

6 réponses
Avatar
jean.paulo
Suite à ton info, j'ai cherché à gérer la liste déroulante avec 'on change',
sans résultat.
J'arrive bien a créer un sql, ou une table variable, mais la table n'est pas
prise
en compte, ou des erreurs diverses se produisent. Et en plus, ce n'est pas
rapide.

Donc, la question reste :

Comment trouver RAPIDEMENT le bon enregistrement dans une table qui contient
70000 + enregistrements, dont beaucoups sont proches (orthographe
approximatif) ? Et ceci sans entrer deux fois la totalité d'un nom s'il est
inconnu ?

La combo box était parfaite pour cela, mais se bloque a 65xxx
enregistrements !

J'espérais créer une liste 'dynamique', comme en vb6 avec le 'Additem', mais
cela ne semble pas exister en Access.
Une table avec un Requery ne semble plus permettre la recherche ensuite.

--
Jean.paulo

6 réponses

Avatar
Dan
"jean.paulo" a écrit dans le message de news:

Suite à ton info, j'ai cherché à gérer la liste déroulante avec 'on
change',
sans résultat.
J'arrive bien a créer un sql, ou une table variable, mais la table n'est
pas
prise
en compte, ou des erreurs diverses se produisent. Et en plus, ce n'est pas
rapide.

Donc, la question reste :

Comment trouver RAPIDEMENT le bon enregistrement dans une table qui
contient
70000 + enregistrements, dont beaucoups sont proches (orthographe
approximatif) ? Et ceci sans entrer deux fois la totalité d'un nom s'il
est
inconnu ?

La combo box était parfaite pour cela, mais se bloque a 65xxx
enregistrements !

J'espérais créer une liste 'dynamique', comme en vb6 avec le 'Additem',
mais
cela ne semble pas exister en Access.
Une table avec un Requery ne semble plus permettre la recherche ensuite.

--
Jean.paulo



Salut Jean-Paulo,

J'ai réalisé un travail de ce type sur plusieurs BD, mais je ne vais pouvoir
te décrire que la méthode, car je suis charette...

Sur plusieurs formulaires de l'appli, je pose un bouton Jumelles. Celui-ci
déclenche l'ouverture d'un form de recherche multi-critères qui fonctionne
ainsi :
- une zone de texte baptisée MotClé,
- une série de boutons : Saisir un mot-clé, Supprimer le dernier mot-clé,
Réinitialiser les mots-clés, Atteindre l'enregistrement sélectionné, Aperçu
de la liste des enregistrements trouvés
- un sous-form des mots-clés déjà saisis
- des combos permettant d'affiner la recherche dans des tables liées à la
table principale
- un sous-form affichant les enregistrements trouvés (SFRecherche).

Sur mise à jour de la textbox MotClé :
- S'il s'agit de la première recherche, déclenchement d'une requête création
de la table locale "Recherche" ayant pour critère un Like &"*"&MotClé&"*",
et éventuellement le contenu des combos
- S'il s'agit des recherches suivantes, déclenchement d'une requête
suppression dans la table "Recherche" de ce qui ne correspond plus au
mot-clé saisi
- Dans les deux cas, actualisation du sous-form SFRecherche
- Sur MAJ des combos, actualisation du sous-form SFRecherche

La table Recherche contient juste ce qu'il faut pour la lier à la table
principale (la clé devrait suffire).
Le sous-form SFRecherche est basé sur la table Recherche, liée à la table
principale, ce qui permet d'afficher ce qu'on veut...et contient un compteur
qui permet à l'utilisateur d'évaluer la chance qu'il a de trouver son
bonheur dans la liste.

C'est du boulot, je te l'accorde, mais ça permet de faire des recherches
progressives :
- Piège -> 94 occurences
- Cristal -> 12 occurences
- Bruce -> 2 occurences (l'assistant sandwich s'appelait Bruce aussi !)
- Willis -> 1 occurence..

J'espère t'avoir aidé avec tout ça, et dans ce cas, bon courage !

Dan

Avatar
jean.paulo
Merci, ta méthode semble interessante, mais j'ai peur qu'elle ne réponde pas
au critère essentiel, c'est à dire
la rapidité.

En effet, ce que je recherche n'est pas un moyen de trouver LES
enregistrements qui répondent à un critère,
mais CELUI qui correspond directement à la personne voulue (parmi 70000, et
qui peut ne pas
encore exister)

Ainsi, voici ce que je fait :

J'ai plusieurs tables liées, qui sont simples. Prenons un seul des cas. J'ai
sélectionné un film.
Pour ce film, je veux entrer les acteurs (et autres). Donc je cherche UN PAR
UN tout les noms
voulus (5 à 20 en moyenne) et une fois trouvé, je crée un lien pour chacun.

Avec la combo box, l'entrée de chaque lettre réduit la liste possible, et
dans 80 % des cas 5 à 6
lettres trouvent le bon nom dans le fichier. Avec les limites de la combo à
65000, je suis déjà
obligé d'entrer presque le nom complet au delà du W, et si je dois ouvrir
des sous formulaires (il y en a
déjà 2 sur mon form), la saisie devient presque interminable.

Déjà, le test (qui ne fonctionne pas !) d'entrer une lettre à part pour
créer un 'sous-ensemble'
constitue une contrainte qui ralentit la saisie.

Ce qui marcherait, c'est comme la combo en VB6, que l"entrée de la première
lettre permette
de créer EN MEMOIRE une liste source limitée, mais celà ne semble pas
possible avec Access.

--
Jean.paulo

"Dan" a écrit dans le message de
news:42c4faed$0$25039$

"jean.paulo" a écrit dans le message de news:

Suite à ton info, j'ai cherché à gérer la liste déroulante avec 'on
change',
sans résultat.
J'arrive bien a créer un sql, ou une table variable, mais la table n'est
Jean.paulo

*****

Salut Jean-Paulo,

J'ai réalisé un travail de ce type sur plusieurs BD, mais je ne vais
pouvoir

te décrire que la méthode, car je suis charette...
*****

C'est du boulot, je te l'accorde, mais ça permet de faire des recherches
progressives :
- Piège -> 94 occurences
- Cristal -> 12 occurences
- Bruce -> 2 occurences (l'assistant sandwich s'appelait Bruce aussi !)
- Willis -> 1 occurence..

J'espère t'avoir aidé avec tout ça, et dans ce cas, bon courage !

Dan






Avatar
3stone
Salut,

"jean.paulo"
| Suite à ton info, j'ai cherché à gérer la liste déroulante avec 'on change',
| sans résultat.
| J'arrive bien a créer un sql, ou une table variable, mais la table n'est pas
| prise
| en compte, ou des erreurs diverses se produisent. Et en plus, ce n'est pas
| rapide.
|
| Donc, la question reste :
|
| Comment trouver RAPIDEMENT le bon enregistrement dans une table qui contient
| 70000 + enregistrements, dont beaucoups sont proches (orthographe
| approximatif) ? Et ceci sans entrer deux fois la totalité d'un nom s'il est
| inconnu ?
|
| La combo box était parfaite pour cela, mais se bloque a 65xxx
| enregistrements !


C'est loin d'être parfait... puisque tu ramène TOUTES les lignes de ta table
C'est le genre de "facilité" qui fait ramer une base en réseau !


| J'espérais créer une liste 'dynamique', comme en vb6 avec le 'Additem', mais
| cela ne semble pas exister en Access.
| Une table avec un Requery ne semble plus permettre la recherche ensuite.

Méthode tout aussi mauvaise... 100000 fois un Additem :-(



Regarde plutôt l'exemple vite fait que j'ai mis ici:
http://users.skynet.be/accesshome/ah_telechargements.htm
tout en bas : "Recherche par TextBox"

Précision: Le champ sur lequel se fait la recherche DOIT être indexé.



PS: Il n'est pas d'usage d'adresser un message sur forum !
Si la question concerne un message précédent,
il suffit de rester dans le fil de la discussion...


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
jean.paulo
Merci, je vais etudier l'exemple.

J'ai peut-être trouvé une solution avec l'article MS : ACC2000 Base Combo
Box on Parameter Query to Filter Values_fichiers
mais les instructions ne marchent pas correctement.

--
Jean.paulo

"3stone" a écrit dans le message de
news:
Salut,

"jean.paulo"
|
| Donc, la question reste :
|
| Comment trouver RAPIDEMENT le bon enregistrement dans une table qui
contient

| 70000 + enregistrements, dont beaucoups sont proches (orthographe
| approximatif) ? Et ceci sans entrer deux fois la totalité d'un nom s'il
est

| inconnu ?
|
| La combo box était parfaite pour cela, mais se bloque a 65xxx
| enregistrements !


C'est loin d'être parfait... puisque tu ramène TOUTES les lignes de ta
table

C'est le genre de "facilité" qui fait ramer une base en réseau !



Je ne suis PAS en réseau, et je rempli ainsi ma base depuis 4 ans !


| J'espérais créer une liste 'dynamique', comme en vb6 avec le 'Additem',
mais

| cela ne semble pas exister en Access.
| Une table avec un Requery ne semble plus permettre la recherche ensuite.

Méthode tout aussi mauvaise... 100000 fois un Additem :-(




Non, je comptais me limiter à 50-100 articles. Mais ça ne marche pas du
tout.


Regarde plutôt l'exemple vite fait que j'ai mis ici:
http://users.skynet.be/accesshome/ah_telechargements.htm
tout en bas : "Recherche par TextBox"

Précision: Le champ sur lequel se fait la recherche DOIT être indexé.



PS: Il n'est pas d'usage d'adresser un message sur forum !
Si la question concerne un message précédent,
il suffit de rester dans le fil de la discussion...



La discussion en question ne m'est plus accessible sur msnews.


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw





Avatar
jean.paulo
Oui, l'exemple me semble résoudre le problème. Il faut probablement que je
change
la taille de la zone de liste dynamiquement pour la faire entrer dans mon
formulaire, et aussi
gérer le 'not in list', mais ça ne semble pas trop compliqué.

Je ne comprend pas bien pourquoi ici le 'requery' semble inutile, alors que
dans mes
tests il ne mettait même pas à jour cette fichue liste ?

Merci pour cette aide.
--
Jean.paulo

"jean.paulo" a écrit dans le message de
news:
Merci, je vais etudier l'exemple.


"3stone" a écrit dans le message de
news:
Salut,



Regarde plutôt l'exemple vite fait que j'ai mis ici:
http://users.skynet.be/accesshome/ah_telechargements.htm
tout en bas : "Recherche par TextBox"

Précision: Le champ sur lequel se fait la recherche DOIT être indexé.


A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw








Avatar
3stone
Salut,

"jean.paulo"
| Oui, l'exemple me semble résoudre le problème. Il faut probablement que je
| change la taille de la zone de liste dynamiquement pour la faire entrer dans mon
| formulaire,


Ce n'est qu'un exemple pour illustrer l'usage que l'on peut faire de l'événement
"Sur changement" d'une zone de texte...
Bien évidement, on broder à partir de là!
Par exemple:
- ne commencer la recherche qu'après saisie de minimum x caractères
- chercher n'importe ou dans le champs, au lieu de la recherche par le début,
mais attention... beaucoup plus lent sur un grand nombre de record.
- remplacer la liste par un sous-formulaire...

|
| et aussi gérer le 'not in list', mais ça ne semble pas trop compliqué.


un bouton à coté de la zone de saisie fait l'affaire, puisque il n'y a pas
de "not in list", ici. Il n'affiche que ce qui existe...


| Je ne comprend pas bien pourquoi ici le 'requery' semble inutile, alors que
| dans mes tests il ne mettait même pas à jour cette fichue liste ?


un Requery est nécessaire lorsque tu modifie directement la source...
ex: lorsque tu fait une mise à jour de la table sur laquelle est basé une liste,
il faut donc "recharger" complêtement la liste.

Mais pas dans l'exemple, car en "réattribuant" le Rowsource à la liste,
elle se rempli automatiquement...
Un requery ne serait que perte de temps et transfert inutile!



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw