Zone de liste limitée - VB/VBA/VBS - Programmation
Marsh Posté le 23-06-2011 à 15:57:03
Quelle version d'Access ?
Je viens de faire l'essai d'un formulaire à la con, pointant sur une table Communes contenant plus de 36000 enregistrements, aucun souci sous : Access97, Access2003 et Access2007
Idem, avec d'autres tables où les tables Communes et Départements sont liées.
Je pense plus à ta requête VBA perso... Enfin, tes WHERE plutot...
Si tu fais ta requete directement dans les proprietes de la zone de liste ?
Dans la propriété "Contenu" genre :
SELECT DISTINCTROW [Commune].[N°Commune], [Commune].[NomCom] FROM [Commune];
Marsh Posté le 23-06-2011 à 16:27:42
La version est enregistrée au format accdb. Je viens de remarquer sur une base similaire programmé sur une version antérieure de access (.mdb). Le problème ne pose pas. Peut etre est-ce une cause mais d'après tes remarques ce n'est pas le cas.
Je vais donc revérifier mon code en prenant note de tes remarques. Je reviens vers toi si le problème persiste.
Merci pour tes réponses dje69r
Marsh Posté le 04-07-2011 à 11:43:11
Malheureusement le problème persiste malgré les solutions proposées. C'est vraiment galère. La requête VBA est bonne pourtant . Auriez-vous d'autres solutions a me proposer svp.
Merci par avance
Marsh Posté le 04-07-2011 à 12:08:00
Je persiste pour la requete.
Si je créé une requete sans code, contenant 40000 communes, aucun souci. Ma Combo, ou ma ListBox affiche bien tout.
Si tu comptes le nombre d'enregistrement de ta requete vba, tu as le bon nombre ?
Edit : et sur une base .accdb
Marsh Posté le 04-07-2011 à 16:06:04
J'ai testé la requête en mode SQL et celle-ci renvoie bien mes 1341 enregistrements dans ma zone de liste. Comme tu le dis à juste titre ce n'est pas un problème de "limite" de du nombre d'enregistrements mais un problème dans mon code. Mais je n'arrive pas a voir à quel niveau le problème situe
Voici un bout de mon code peut être cela vous aidera à solutionner mon problème:
Private Sub AJOUTER_Click()
Dim resultatReq As Recordset 'Résultat Requête
Dim TYPE_ECHELLE As String 'champs qui renseigne le type de l'enregistrement (exp: REG, DEP ...)
Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'" ) <= Cette requête renvoie bien le bon nombre d'enregistrement sous sql
'Ajout des résultats dans la liste
resultatReq.MoveFirst
While Not resultatReq.EOF
SELECTION.AddItem resultatReq!CODE & ";" & resultatReq!LIBEL & ";" & TYPE_ECHELLE
resultatReq.MoveNext
Wend
MsgBox SELECTION.ListCount
Le msgbox me retourne la valeur 1066 alors que je devrais avoir 1341 enregistrements
Marsh Posté le 05-07-2011 à 14:43:56
Re,
Alors plusieurs idées. Tu fais un Select Distinct, donc si tu as des doublons, forcément il les omet. Avec un Select (tout court) le nombre est toujours le meme ?
Ensuite, essaie cette procédure :
Code :
|
Marsh Posté le 05-07-2011 à 14:52:53
Ceci te retourne quoi ?
Code :
|
Marsh Posté le 05-07-2011 à 19:30:41
Salut Djé alors voila je vais me pendre ...
Le distinct n'influe en rien la sur le resultat car il n'y a pas de doublons
Je pense sincèrement que le problème ne vient pas de ma requête mais du addItem
Le problème est que si je prend des valeurs à insérer dans ma 1ere colonne de ma zone de liste je n'ai pas de problème (que ce soit les libéllés) dès que j'insère les données dans la colonnes 2 et 3 là ça part en vrille et je n'ai pas tout mes enregistrements. (1066 / 1347)
Je dois écrire quelque chose de faux dans mon code mais quoi ?
While Not resultatReq.EOF = True
SELECTION.AddItem resultatReq!CODE & ";" & resultatReq!LIBEL & ";" & TYPE_ECHELLE '
resultatReq.MoveNext
Wend
Merci de ton aide
Marsh Posté le 05-07-2011 à 19:49:14
Le fait de passer par le For x=1 to recordcount... j'ai eu la même idée que toi mais d'une autre manière (cf ci dessous) j'ai même mis essayé des compteurs pour voir si le fichier était parcouru entierment. Et le pire est que tout fonctionnait correctement .
Voila ce que j'avais essayé :
Code :
|
A mon avis c'est au niveau de déclaration des colonnes que je dois merder puisque avec 1 colonne ca marche
Code :
|
JE VAIS BIEN TOUT VA BIEN
Marsh Posté le 23-06-2011 à 10:55:16
Bonjour,
J'ai un petit problème sur Access, peut-être pourriez-vous m'aider.
J'ai créé une base de donnée permettant de renvoyer diverses informations sur des communes françaises (pop etc).
Ma zone de liste est basée sur une requête SQL codée en VBA, jusque là tout va bien.
Seulement lorsque la requête renvoie beaucoup d'enregistrements (ex: toutes les communes d'une région), la zone de liste ne les affiche pas tous. Ce qui pose problème. Ce problème ne se pose pas quand on choisi des filtres plus fins qui renvoient moins d'enregistrements (toutes les communes d'un département par exemple).
Pour donner un ordre d'idée, la zone n'affiche que les 1020 premiers enregistrements environ (le nombre est variable donc c'est encore + étonnant) alors que le résultat devrait être de 3500 et plus.
Donc ma question :
- Une zone de liste est-elle limitée?
- Si oui, y-a-t-il une propriété / code qui permette de modifier cette limite?
- Si oui, quelle est-elle / il?
Merci de votre aide.