OVH Cloud OVH Cloud

Limitiation zone de liste à 65536 enregistrements

12 réponses
Avatar
Robert LOI
Bonjour,
N'ayant pas eu de réelles solutions suite à une demande déjà postée. Je
tente de poser le problème à nouveau avec un petit espoir et en remerciant
encore ceux qui ont répondu à la première demande

Voici donc un copier-coller du problème

Merci d'avance

Bonjour,

Je travaille sur une base de données cinéma qui contient 18 000 films et 80
000 artistes.

DAns un formulaire film, j'intègre les artistes ou techniciens grâce à une
liste déroulante qui les classe par ordre alphabétique. Or le problème est
qu'access (même la version 2003) n'affiche que les 65536 premiers
enregistrements de la liste et pas les suivants. Ce qui me pose de plus en
plus de problèmes car si le nom commence par V, W etc. Impossible de
l'afficher dans la liste, j'ai bien fait une deuxième liste inversée pour
avoir les 65536 premiers en partant de z, mais bon ça m'ajoute une liste
déroulante dans un formulaire déjà très complexe et ça ne résout le problème
que provisoirement car dès que j'aurais atteints 2 X 65536 en nombre
d'enregistrements, je ne pourrais pas faire apparaître tous les noms même
avec deux listes.

J'avais déjà évoqué ce problème dans un forum et on m'avait proposé de créer
une liste pour chaque lettre ou un systyme de bouton alphabétique...mais ce
serait fastidieux, et surtout éminément pas pratique...

1/ Existe-t-il un moyen qui permette de faire afficher la totalité des
enregistrements dans la liste déroulante et pas seulement les 365 premiers ?
2/ Dans le cas contraire, serait-il possible que si par exemple je dois
saisir un nom qui commence par "V" cela filtre automatiquement la liste en
ne tenant compte que des noms qui commencent par "V" Ainsi en partant de "V"
je pourrais afficher tous les noms jusqu'à 65536 qui semble être la limite
d'affichage d'Acces en liste déroulante. ? Si le principe est possible, je
pourrais l'appliquer à pour toutes les lettres, là j'aurais une solution
quasi-définitive à mon problème, car potentiellement la possibilité
d'afficher 65536 noms par lettre de l'alphabet

Voilà je sais pas si c'est clair, mais si ça l'est et que quelqu'un connaît
une solution ?

Merci d'avance

10 réponses

1 2
Avatar
Charles ERNST
ce qui revient à faire une première liste A....Z
et filtrer une deuxième liste en fonction de la lettre choisie dans la liste
1 .....

quelle que soit la technique ce sera fastidieux de toute façon...

Faite une case de saisie du nom et faites une liste fondée sur une
recherche SOUNDEX




"Robert LOI" a écrit dans le message de news:
442cfb3e$0$19720$
Bonjour,
N'ayant pas eu de réelles solutions suite à une demande déjà postée. Je
tente de poser le problème à nouveau avec un petit espoir et en remerciant
encore ceux qui ont répondu à la première demande

Voici donc un copier-coller du problème

Merci d'avance

Bonjour,

Je travaille sur une base de données cinéma qui contient 18 000 films et
80
000 artistes.

DAns un formulaire film, j'intègre les artistes ou techniciens grâce à une
liste déroulante qui les classe par ordre alphabétique. Or le problème est
qu'access (même la version 2003) n'affiche que les 65536 premiers
enregistrements de la liste et pas les suivants. Ce qui me pose de plus en
plus de problèmes car si le nom commence par V, W etc. Impossible de
l'afficher dans la liste, j'ai bien fait une deuxième liste inversée pour
avoir les 65536 premiers en partant de z, mais bon ça m'ajoute une liste
déroulante dans un formulaire déjà très complexe et ça ne résout le
problème
que provisoirement car dès que j'aurais atteints 2 X 65536 en nombre
d'enregistrements, je ne pourrais pas faire apparaître tous les noms même
avec deux listes.

J'avais déjà évoqué ce problème dans un forum et on m'avait proposé de
créer
une liste pour chaque lettre ou un systyme de bouton alphabétique...mais
ce
serait fastidieux, et surtout éminément pas pratique...

1/ Existe-t-il un moyen qui permette de faire afficher la totalité des
enregistrements dans la liste déroulante et pas seulement les 365 premiers
?
2/ Dans le cas contraire, serait-il possible que si par exemple je dois
saisir un nom qui commence par "V" cela filtre automatiquement la liste en
ne tenant compte que des noms qui commencent par "V" Ainsi en partant de
"V"
je pourrais afficher tous les noms jusqu'à 65536 qui semble être la limite
d'affichage d'Acces en liste déroulante. ? Si le principe est possible,
je
pourrais l'appliquer à pour toutes les lettres, là j'aurais une solution
quasi-définitive à mon problème, car potentiellement la possibilité
d'afficher 65536 noms par lettre de l'alphabet

Voilà je sais pas si c'est clair, mais si ça l'est et que quelqu'un
connaît
une solution ?

Merci d'avance






Avatar
Rv
Salut,

Pour répondre techniquement à la question, une piste:
Sur l'événement change de la liste, changer la source de la liste:
Exemple avec la liste 'Modifiable0' alimenté par une table client (Id,
Nom), avec deux colonnes (Id, Nom) , la colonne 1 (Id) est la colonne liée
mais est masqué ( largeur colonnes :0cm;5cm)
Private Sub Modifiable0_Change
Modifiable0.RowSource = "SELECT * FROM CLIENT WHERE NOMCLIENT LIKE
'" & Modifiable0.Text & "*'"
End sub

Sinon dans ce cas j'utiliserai autre chose qu'une liste. J'utiliserai un
formulaire consacré à la recherche qui renverrai sur le formulaire
principal avec l'élément recherché. En effet si la liste contient plus de
65535 éléments alors il est sûrement interessant de proposer un outil plus
complet que la liste pour rechercher un élément. Ceci aura les avantages
suivant:
- Possibilité de proposer plusieurs filtres/critères de recherche.
- Meilleure ergonomie car on ne mélange pas la recherche avec la
consultation/saisie
- Améliorer les temps d'accès à la base: au lieu de proposer
directement tous les éléments de la liste, le formulaire de recherche sera
vide au départ et ne contiendra que les enregistrements filtrés par
l'utilisateur lors de ses recherches.
Inconvénient 2 écrans:
- Donc plus de manip pour l'utilisateur.
- Et un temps de réalisation plus grand bien que le formulaire de
recheche ne doit pas être trés difficile à construire.

M'enfin ceci dit ces remarques sont d'ordre général et je ne connais
rien au détails de votre base.

Bonne continuation

Rv




"Robert LOI" a écrit dans le message de news:
442cfb3e$0$19720$
Bonjour,
N'ayant pas eu de réelles solutions suite à une demande déjà postée. Je
tente de poser le problème à nouveau avec un petit espoir et en remerciant
encore ceux qui ont répondu à la première demande

Voici donc un copier-coller du problème

Merci d'avance

Bonjour,

Je travaille sur une base de données cinéma qui contient 18 000 films et
80
000 artistes.

DAns un formulaire film, j'intègre les artistes ou techniciens grâce à une
liste déroulante qui les classe par ordre alphabétique. Or le problème est
qu'access (même la version 2003) n'affiche que les 65536 premiers
enregistrements de la liste et pas les suivants. Ce qui me pose de plus en
plus de problèmes car si le nom commence par V, W etc. Impossible de
l'afficher dans la liste, j'ai bien fait une deuxième liste inversée pour
avoir les 65536 premiers en partant de z, mais bon ça m'ajoute une liste
déroulante dans un formulaire déjà très complexe et ça ne résout le
problème
que provisoirement car dès que j'aurais atteints 2 X 65536 en nombre
d'enregistrements, je ne pourrais pas faire apparaître tous les noms même
avec deux listes.

J'avais déjà évoqué ce problème dans un forum et on m'avait proposé de
créer
une liste pour chaque lettre ou un systyme de bouton alphabétique...mais
ce
serait fastidieux, et surtout éminément pas pratique...

1/ Existe-t-il un moyen qui permette de faire afficher la totalité des
enregistrements dans la liste déroulante et pas seulement les 365 premiers
?
2/ Dans le cas contraire, serait-il possible que si par exemple je dois
saisir un nom qui commence par "V" cela filtre automatiquement la liste en
ne tenant compte que des noms qui commencent par "V" Ainsi en partant de
"V"
je pourrais afficher tous les noms jusqu'à 65536 qui semble être la limite
d'affichage d'Acces en liste déroulante. ? Si le principe est possible,
je
pourrais l'appliquer à pour toutes les lettres, là j'aurais une solution
quasi-définitive à mon problème, car potentiellement la possibilité
d'afficher 65536 noms par lettre de l'alphabet

Voilà je sais pas si c'est clair, mais si ça l'est et que quelqu'un
connaît
une solution ?

Merci d'avance






Avatar
jean.paulo
--
Jean.paulo.

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

"Robert LOI"
| 1/ Existe-t-il un moyen qui permette de faire afficher la totalité des
| enregistrements dans la liste déroulante et pas seulement les 365
premiers ?



ou vas tu chercher cette limite ?

Celle à 65536 est bien connue maintenant !


| 2/ Dans le cas contraire, serait-il possible que si par exemple je dois
| saisir un nom qui commence par "V" cela filtre automatiquement la liste
en

tu cherche à réinventer les listes liées que l'on t'a proposée ?

si tu n'en veux vraiment pas, regarde ceci :
http://www.3stone.be/access/download.php?lng=fr&pg`


Ce lien mène à un javascript qui ne fonctionne pas chez moi !


Je compatis pleinement à la frustation de Robert, car j'ai exactement le
même problème. Personne
ne veut comprendre que toute recherche dans une liste de nom qui contient de
nombreux noms
SIMILAIRES ne peut se faire RAPIDEMENT que par une combo box. Ici, rien à
voir
avec la recherche d'un client pour entrer 5 minutes d'informations, mais de
saisir 10 ou
20 noms différents pour chaque enregistrements en cours.

J'ai essayé aussi d'appliquer ma méthode (champ première lettre, puis select
, rowsource) à la
première lettre entrée DANS la combo box, mais je n'ai pas réussi à le faire
fonctionner, car
cela semble entraîner des boucles dans le code. Ma méthode est rapide, même
si elle
perd du temps par la saisie séparée de cette première lettre.

Comme Robert le précise, une recherche par le bouton 'chercher' ou par un
filtre rend la
saisie d'une filmographie tellement fastidieuse qu'il vaut mieux arrêter
tout de suite d'y penser.

Je serais interessé par une copie de la base de Robert (la mienne fait 40 mo
maintenant)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



Avatar
Bonjour,

"jean.paulo"
http://www.3stone.be/access/download.php?lng=fr&pg`

Ce lien mène à un javascript qui ne fonctionne pas chez moi !



lien direct de l'exemple :
http://www.3stone.be/access/file/Selection_2k.zip

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------


Avatar
jean.paulo
Oui, cet exemple pourrait être une solution au problème. La difficulté est
de l'ajouter
à plusieurs exemplaires à des formulaires déjà encombrés, mais je pense
qu'en
ajoutant une modification dynamique de la hauteur de la liste cela sera
possible.

Je vais tester cette possibilité. (En fait, il s'agit d'une variante de la
solution que j'ai
utilisée).

Merci pour l'info.

--
Jean.paulo

<Anor> a écrit dans le message de
news:442e271a$0$26736$
Bonjour,

"jean.paulo"
http://www.3stone.be/access/download.php?lng=fr&pg`

Ce lien mène à un javascript qui ne fonctionne pas chez moi !



lien direct de l'exemple :
http://www.3stone.be/access/file/Selection_2k.zip

a+
--
Arnaud
---------------------------------------------
infos, conseils et liens : http://www.mpfa.info
---------------------------------------------






Avatar
3stone
Salut,

"jean.paulo"

| Ce lien mène à un javascript qui ne fonctionne pas chez moi !


Active ton "scripting" ou place le site dans tes sites de confiance!
Tu n'es pas sur un site de c** !!!



| Je compatis pleinement à la frustation de Robert, car j'ai exactement le
| même problème. Personne
| ne veut comprendre que toute recherche dans une liste de nom qui contient de
| nombreux noms
| SIMILAIRES ne peut se faire RAPIDEMENT que par une combo box.


Tu pense vraiment ce que tu raconte ?
que si tu dois faire une recherche parmis quelques centaines de milliers ou
millions de personnes tu dispose d'un soft qui te les propose dans une
liste déroulante ???
Il s'agit a chaque fois d'une zone de texte à partir de laquelle on ira
chercher les enregistrements correspondants aux quelques caractères saisis!

Une paire de listes liées apportent un confort et une rapidité de recherche
dont tu ne semble pas avoir pris conscience...
D'ailleurs, le premier contrôle peut parfaitement n'être qu'un simple textbox
dans lequel l'on saisi au minimum un caractère. Caractère qui filtrera
la liste de sélection.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
jean.paulo
"3stone" a écrit dans le message de
news:
Salut,

"jean.paulo"
Active ton "scripting" ou place le site dans tes sites de confiance!
Tu n'es pas sur un site de c** !!!



Peut-être, peut-être pas. Comment le saurais-je ? J'ai une forte méfiance
dans les références URL trouvée en News, même sur un site Microsoft.
Un accès direct m'à permis depuis
d'obtenir l'info sans risques. C'était d'ailleurs une autre forme de la même
méthode que j'avais donnée et utilisée.

J'ai eu une lueur d'espoir. J'ai essayé d'appliquer directement la méthode à
la Combo box, en entrant le .rowsource lié à la première lettre saisie...

Et bien, aucune errreur, la propriété affiche bien la source... Mais la
liste reste
vide.

Donc, il faut utiliser une Listbox, et recréer toutes les propriétés utiles
de la Combo,
en particulier le 'not in list' par du code personnel, avec un basculement
d'un
champ à l'autre.



| Je compatis pleinement à la frustation de Robert, car j'ai exactement le
| SIMILAIRES ne peut se faire RAPIDEMENT que par une combo box.

Tu pense vraiment ce que tu raconte ?
que si tu dois faire une recherche parmis quelques centaines de milliers
ou

millions de personnes tu dispose d'un soft qui te les propose dans une
liste déroulante ???


Si je faisais celà, je n'utiliserais surement pas Accès. Par ailleurs, il ne
s'agit pas
d'atteindre UNE personne parmi des millions une fois toutes les dix minutes,
mais une personne parmi une liste de gens connus (enfin, en principe),
plusieurs fois en quelques minutes.
Cela ne se résoud pas de la même façon. La liste déroulante
permet une saisie RAPIDE. Toutes les autres méthodes sont lentes et
laborieuses.
Ou alors, il faut abandonner le projet.

Je vais dire adieu à Access et retourner à mes fiches cartonnées !

Allons, prenons un autre exemple. Pour Vendredi, vous devez établir la
liste des amis de classe de Mr Jean Aymar (entre autres). Pour cela, il faut
saisir
le livre de promotion de l'école, dont 80 % des noms existent déjà dans la
table
des 270 000 habitants de votre ville. Il n'y a que 250 pages à saisir, après
tout,
car il manque juste l'école et l'année !

Alors bonne chance avec les pop-up de recherche, et une moyenne de 60
élèves par pages.

Petit détail, entre autres erreurs de l'imprimeur, Gustave Poilaunez, classe
1962
existe dans la base sous son vrai nom Poîl O'ney Gustaff ... Je n'exagère
pas,
j'ai trouvé dans un livre de 1957 Michel Simon écrit Michel Symon, et pire.

A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/

--


Jean.paulo

Avatar
jean.paulo
"Robert LOI" a écrit dans le message de
news:442cfb3e$0$19720$
Bonjour,
N'ayant pas eu de réelles solutions suite à une demande déjà postée. Je
tente de poser le problème à nouveau avec un petit espoir et en remerciant
encore ceux qui ont répondu à la première demande

Je travaille sur une base de données cinéma qui contient 18 000 films et
80

000 artistes.


Voilà je sais pas si c'est clair, mais si ça l'est et que quelqu'un
connaît

une solution ?

Merci d'avance




Bonjour.


Suite à d'autres messages, j'ai déclaré que l'usage du truc sur une liste
'Combo' ne
fonctionnait pas. Mais j'avais ignoré un paramètre du champ.

En fait, ça marche, et sous réserves de quelques tests, c'est LA solution :

Déclarer une zone de liste déroulante 'Combo' (ici, avec une seule colonne!)
appelée 'maliste' dans l'exemple proposé 'selection.mdb'

Dans 'On change', entrer le code :

Private Sub Maliste_Change()
Dim sSQL As String

sSQL = "SELECT Commune FROM Communes " _
& "WHERE Commune Like '" & Maliste.Text & "*';"

If Len(Maliste.Text) > 0 And Len(Maliste.Text) < 4 Then
Me.Maliste.RowSource = sSQL
Me.Maliste.Dropdown
Else
' Me.lstCommune.RowSource = ""
End If

End Sub

Noter que la procédure se déclenche sur le changement dans la combo box
elle-même !

Il n'y a pratiquement aucune différence avec l'usage direct de la combo.

Il semble plus pratique de tester séparement le cas 'vide' et de mettre la
liste
complète dans ce cas, mais la base fonctionne ! Mettre aussi ce code dans
form load.

Je serais toujours interessé par une copie de ta base ! (en échange, si tu
veux sur un site, car la mienne fait déjà 40 Mo)


--
Jean.paulo

Avatar
3stone
re,

"jean.paulo"

| "3stone"
| > Active ton "scripting" ou place le site dans tes sites de confiance!
| > Tu n'es pas sur un site de c** !!!
| >
|
| Peut-être, peut-être pas. Comment le saurais-je ? J'ai une forte méfiance
| dans les références URL trouvée en News, même sur un site Microsoft.
| Un accès direct m'à permis depuis
| d'obtenir l'info sans risques. C'était d'ailleurs une autre forme de la même
| méthode que j'avais donnée et utilisée.


Ah oui ?
Et comment peux tu télécharger et faire confiance à quelque chose
que l'on t'indique sur ces mêmes news et qui plus est à télécharger
à partir du même site ??
Tu serais pas un peu parano toi ? ;-)




[...]
| Alors bonne chance avec les pop-up de recherche, et une moyenne de 60
| élèves par pages.
|
| Petit détail, entre autres erreurs de l'imprimeur, Gustave Poilaunez, classe
| 1962
| existe dans la base sous son vrai nom Poîl O'ney Gustaff ... Je n'exagère
| pas,
| j'ai trouvé dans un livre de 1957 Michel Simon écrit Michel Symon, et pire.


Bavardages inutiles pour noyer le poisson que tout cela et qui n'ont rien à voir
avec le fait qu'une liste déroulante soit (raisonnablement) limitée à ~65.000 lignes.
Ceci dit, c'est autant que ce que peut contenir un feuille Excel toute entière!


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Robert LOI
"jean.paulo" a écrit dans le message de news:
OG$
"Robert LOI" a écrit dans le message de
news:442cfb3e$0$19720$

Suite à d'autres messages, j'ai déclaré que l'usage du truc sur une liste
'Combo' ne
fonctionnait pas. Mais j'avais ignoré un paramètre du champ.

En fait, ça marche, et sous réserves de quelques tests, c'est LA solution
:

Déclarer une zone de liste déroulante 'Combo' (ici, avec une seule
colonne!)
appelée 'maliste' dans l'exemple proposé 'selection.mdb'

Dans 'On change', entrer le code :

Private Sub Maliste_Change()
Dim sSQL As String

sSQL = "SELECT Commune FROM Communes " _
& "WHERE Commune Like '" & Maliste.Text & "*';"

If Len(Maliste.Text) > 0 And Len(Maliste.Text) < 4 Then
Me.Maliste.RowSource = sSQL
Me.Maliste.Dropdown
Else
' Me.lstCommune.RowSource = ""
End If

End Sub

Noter que la procédure se déclenche sur le changement dans la combo box
elle-même !

Il n'y a pratiquement aucune différence avec l'usage direct de la combo.

Il semble plus pratique de tester séparement le cas 'vide' et de mettre la
liste
complète dans ce cas, mais la base fonctionne ! Mettre aussi ce code dans
form load.

Je serais toujours interessé par une copie de ta base ! (en échange, si tu
veux sur un site, car la mienne fait déjà 40 Mo)


Ben merci encore pour toutes les réponses. Pour cette dernière solution, je
vais prendre le soin de bien la lire car mes connaissances en Access sont
assez limitées.
Pour l'échange je te suggère de me mailer pour qu'on puisse en discuter plus
directement, par exemple à travers une adresse msn

1 2