Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3056 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Zone de liste limitée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Zone de liste limitée

n°2084111
miron_fds
Posté le 23-06-2011 à 10:55:16  profilanswer
 

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.  
 
 

mood
Publicité
Posté le 23-06-2011 à 10:55:16  profilanswer
 

n°2084287
SuppotDeSa​Tante
Aka dje69r
Posté le 23-06-2011 à 15:57:03  profilanswer
 

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];


---------------
Soyez malin, louez entre voisins !
n°2084305
miron_fds
Posté le 23-06-2011 à 16:27:42  profilanswer
 

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

n°2086895
miron_fds
Posté le 04-07-2011 à 11:43:11  profilanswer
 

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

n°2086904
SuppotDeSa​Tante
Aka dje69r
Posté le 04-07-2011 à 12:08:00  profilanswer
 

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


Message édité par SuppotDeSaTante le 04-07-2011 à 12:08:56

---------------
Soyez malin, louez entre voisins !
n°2086959
miron_fds
Posté le 04-07-2011 à 16:06:04  profilanswer
 

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
 

n°2086960
miron_fds
Posté le 04-07-2011 à 16:06:36  profilanswer
 

Merci pour ton aide dje

n°2087200
SuppotDeSa​Tante
Aka dje69r
Posté le 05-07-2011 à 14:43:56  profilanswer
 

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 :
  1. Private Sub AJOUTER_Click()
  2. Dim resultatReq As Recordset 'Résultat Requête
  3. Dim TYPE_ECHELLE As String 'champs qui renseigne le type de l'enregistrement (exp: REG, DEP ...)
  4. Set resultatReq = CurrentDb.OpenRecordset("SELECT DISTINCT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'" )
  5. 'Ajout des résultats dans la liste
  6. MsgBox resultatReq.RecordCount 'ici il va afficher le nombre d'enregistrement de la requete.
  7. resultatReq.MoveFirst
  8. For x = 1 To resultatReq.RecordCount
  9.     SELECTION.AddItem resultatReq!CODE & ";" & resultatReq!LIBEL & ";" & TYPE_ECHELLE
  10.     resultatReq.MoveNext
  11. Next x
  12. MsgBox SELECTION.ListCount
  13. End Sub


---------------
Soyez malin, louez entre voisins !
n°2087206
SuppotDeSa​Tante
Aka dje69r
Posté le 05-07-2011 à 14:52:53  profilanswer
 

Ceci te retourne quoi ?
 

Code :
  1. Sub Toto()
  2. Set resultatReq = CurrentDb.OpenRecordset("SELECT First(LIBELIRIS) as LIBEL, Count(LIBELIRIS) as LIBEL FROM IRIS GROUP BY LIBELIRIS HAVING (Count(LIBELIRIS (Count() >1)))"
  3. MsgBox resultatReq.RecordCount
  4. End Sub


---------------
Soyez malin, louez entre voisins !
n°2087327
miron_fds
Posté le 05-07-2011 à 19:30:41  profilanswer
 

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
 

mood
Publicité
Posté le 05-07-2011 à 19:30:41  profilanswer
 

n°2087329
miron_fds
Posté le 05-07-2011 à 19:49:14  profilanswer
 

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 :
  1. Set resultatReq = CurrentDb.OpenRecordset("SELECT IRIS as CODE,LIBELIRIS as LIBEL FROM IRIS WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'" )
  2.      Set resultatReqBIS = CurrentDb.OpenRecordset("SELECT COUNT(IRIS) as NB FROM IRIS WHERE LIBELDEP='" & DEPARTEMENT & "' OR DEP='" & DEPARTEMENT & "'" )
  3.      MsgBox resultatReqBIS!NB & "    aaaaa" 'ici il va afficher le nombre d'enregistrement de la requete
  4.     'Ajout des résultats dans la liste
  5.     resultatReq.MoveFirst
  6.  
  7.     For x = 1 To resultatReqBIS!NB
  8.     SELECTION.AddItem resultatReq!CODE & ";" & resultatReq!LIBEL & ";" & TYPE_ECHELLE
  9.     resultatReq.MoveNext
  10.     Next x
  11. 'remi=0
  12.     'While Not remi = resultatReqBIS!NB
  13.     '    SELECTION.AddItem (resultatReq!CODE & ";" & resultatReq!LIBEL & ";" & TYPE_ECHELLE) 'ajout de la région
  14.      '   resultatReq.MoveNext
  15.      '   remi = remi + 1
  16.     'Wend
  17.    
  18.     'While Not resultatReq.EOF = True
  19.      '   SELECTION.AddItem (resultatReq!CODE & ";" & resultatReq!LIBEL & ";" & TYPE_ECHELLE) 'ajout de la région
  20.      '   resultatReq.MoveNext
  21.     'Wend
  22.        
  23.         'SELECTION.RowSource = szSQL
  24.         'SELECTION.Requery 'met à jour la liste
  25.    
  26.     VIDER_ECHELLES
  27.    
  28.     MsgBox SELECTION.ListCount
  29. End Sub


 
 
 
A mon avis c'est au niveau de déclaration des colonnes que je dois merder puisque avec  1 colonne ca marche
 
 

Code :
  1. 'While Not resultatReq.EOF = True
  2.      '   SELECTION.AddItem (resultatReq!CODE ) <= LA J'AI TOUT MES ENREGISTREMENTS   
  3.      '   resultatReq.MoveNext
  4.     'Wend


 
 :pt1cable: JE VAIS BIEN TOUT VA BIEN


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Zone de liste limitée

 

Sujets relatifs
ajouter liste déroulante dans un formulaire d'enregistrementUtilisation d'une liste chainées
Liste déroulante optgroupeListe d'objet DEBUTANT JAVA
comment Crée une liste deroulante avec phplors de click sur option de liste déroulante
[jquery] datepicker : liste déroulante des années ne va pas assez loin[Access] Conditionner les données d'une liste en choisissant un cha
flash as2 potard volume + liste track mp3Faire afficher une zone ENUM
Plus de sujets relatifs à : Zone de liste limitée


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR