IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

taille limite d'une listbox


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut taille limite d'une listbox
    bonjour à tous,

    j'insère environ 53000 éléments dans une listbox. puis après dans une autre procédure je récupère le nombre d'éléments avec la propriété

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbre_elements=listbox.listcount
    le problème est que toto me renvoie -8355. est ce que le nrbe d'éléments max d'une listbox est limité?

  2. #2
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Cela est peut-être simplement dû au type de variable dans lequel tu loge le résultat, tu dépasse peut-être la capacité.
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Bonjour oddis,

    Je viens de regarder, la propriété .ListCount est un Integer, donc limité à 32767.
    Au delà :
    - soit le contrôle plante en erreur 6 dépassement de capacité, à priori non,
    - soit tu passe en négatif : 32767 + 1 = -32765

    Au fait combien de temps il faut pour mettre 53000 éléments dans une combo ?

    Je ne suis pas sûr que la combo soit bien adaptée pour ce volume de données.

  4. #4
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Personellement j'utiliserais une base de donnée une boite texte et deux boutons. tu aurais moins de problèmes.
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut
    en fait le listcount passe en négatif, ca ne plante pas. par contre j'ai modifié, j'ai mis 1 textbox multiligne avec un saut de ligne pour séparer chaque donnée mais apparemment on est encore limité dans le nombre de caractére en multiligne à 32Koctets. en fait je fais une comparaison de 2 bases. je stocke les résultat dans un tableau et je voudrais afficher le résultat dans un objet pour chaque bds et pouvoir synchroniser les scrollbars.
    Quel est le meilleur objet à utiliser?

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    A quoi sert une combo ? Avoir une liste de choix "prédéfini" pour faciliter une saisie.
    S'il faut chercher dans 53000 valeurs, cela veux dire qu'on la connait déjà. Non ? Dans ce cas la combo n'est pas utile.

    Là où elle est très intéressante, c'est quand le nombre de valeur est peu important. Ce que tu peux faire pour restreindre le nombre de valeurs, c'est de remplir la combo en fonction de la saisie de l'utilisateur.

    Je m'explique :
    Au départ la combo est vide, mais l'utilisateur peut saisir quelque chose.
    Si l'événement Change, tu peux remplir la combo avec tous les éléments commençant par cette saisie.
    Pour que cela ne soit pas trop long tu peux décider de remplir la combo qu’à partir de 2 ou 3 caractères (c'est plus discriminant).
    Une fois que tu as rempli la combo, tu l'ouvre par le code, comme ça l'utilisateur voit une liste de choix correspondant à ça recherche.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut
    je me suis mal exprimé. j'ai environ 100 000 données par chaque BDS sous oracle. j'importe dans un tableau. chaque BDS, puis je compare les 2 tableuax et je stocke les diffs dans un tableau à 2 dimension. exemple :
    BDS 1
    HUGUE Marie 25 ans marié 3 enfant

    BDS 2
    HUGUE Marie 25 ans divorcé 3 enfant

    Je veux affiché dans un objet la ligne de la BDS 1 et dans un 2 ieme objet la ligne de la BDS 2. Mais j'ai 100 000 data environ et j'ai 53000 diffs qui apparaisent et je veux tout voir sans que l'utilisateur doit taper une partie de la data. Y-a-t-il un objet qui est un stockage de type long sous 4 octets?

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Il faut un controle de type grille. Je pense qu'un controle comme le FlexGrid devrait faire l'affaire.

    Personnellement je ne l'utilise pas. J'utilise la grille d'Infragistic qui est plus évoluée.

  9. #9
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut Najdar

    Ton Infragistic pourrait être une solution intéressante pour un autre problème que je viens de voir tout à l'heure. On le trouve où, ce composant?

  10. #10
    Membre chevronné
    Homme Profil pro
    Développeur VB6 et tout neuf en .Net
    Inscrit en
    Avril 2005
    Messages
    377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VB6 et tout neuf en .Net
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 377
    Par défaut
    Je viens de regarder sur leur site www.infragistics.com et ces ### (idiots en 3 lettres) là ont arrêtés leurs versions "Classic" OCX et ne font plus que du .Net

  11. #11
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    En effet que du .Net! Dommage!

    Ceci dit, histoire d'en avoir le coeur net, j'ai fait des tests et je n'ai pas encore trouvé la limite d'un ListBox...

    Testé sur une machine Pentium III qui tourne à près d'un GHz, pas assez de mémoire (à mon goût), OS : Win XP, sur VB6. Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Activate()
        If List1.ListCount = 0 Then
            Dim max As Long, i As Long
            max = 2 ^ 14 * 2 ^ 8 
            MsgBox max
            For i = 0 To max
                List1.AddItem i
                Debug.Print i ' contribue à ralentir mais aide à voir la progression
                DoEvents
            Next
        End If
    End Sub
    Sur un événement Form_Load, on ne voit rien... et ça plante. J'ai mis un test sur une liste non vide pour éviter un redémarrage de la procédure en cas de changement de focus d'une fenêtre à l'autre... on sait que le Activate se produit dès qu'une fenêtre a le focus... entre autres. Le DoEvents permet de voir ce qui se passe. Sans lui, un rien fait planter le tout. Malheureusement, ça ralentit un peu le test, ce qui n'est pas rien vu le nombre d'itération que j'ai obtenu. Je n'ai pas testé plus loin, car à cette valeur (2 ^ 14 * 2 ^ 8), ça a pris des heures!

    Donc la limite d'une listBox? On dirait que "sky is the limit" comme disent mes voisins du sud! quoique mes premiers tests, que j'ai fait illico avec 2 ^ 16 * 2 ^ 8 mais sur le Form_Load et sans le DoEvents, et bien, ça plantait.

  12. #12
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 124
    Par défaut
    bonjour
    J'ai eu ce même problem il ya quelque temps, le chargement de plus de 72000 mots provenant d'une base de données, le chargement ne posait pas de problem en lui même, mais dés que je cherchais a utiliser comboList.List(> 32658) , plantage.
    Je me suis resolut à mettre 2 Combo l'un sur l'autre et je gerai Zorder de l'un a l'autre suivant les besoins.
    Mais j'ai laisser tombé, car il ma suffit de faire rechercher les mots en passant par une autre strategie.
    Un TextBox, a chaque changement, ajout de caracteres ou suppression, je fais un Like vers la table consernée, resultat plus claire en fait pour l'utilisateur en ce qui conserne ce programme, la recherche dans un combo etant moins pratique pour ce cas precis.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  13. #13
    Membre expérimenté Avatar de AdHoc
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 245
    Par défaut
    Bonjour,
    A mon avis au-delà du millier d'éléments, il vaut mieux afficher des extractions (~des pages ) que sur l'ensemble des données (un ascenseur sur plus de 10 000, bonjour !! )

Discussions similaires

  1. Taille limite d'une Form ?
    Par Barghis dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 25/10/2007, 09h21
  2. Taille limite d'une requête SQL
    Par cradleofpain dans le forum VBScript
    Réponses: 2
    Dernier message: 16/05/2007, 14h10
  3. Taille limite d'une réponse?
    Par Fonzy007 dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/09/2006, 09h13
  4. [VB6]Taille limite d'une frame en hauteur
    Par Sephy dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 07/06/2006, 20h04
  5. taille limite d'une priority_queue
    Par traiangueul dans le forum SL & STL
    Réponses: 3
    Dernier message: 26/08/2004, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo