Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Collections [ Divers / General ] (prince4878)

samedi 22 novembre 2008 à 11:11:21 | Collections

prince4878

Salut tout le monde, j'ai un petit souci a propos des collections avec VB6, cc'est que je ne sais pas vraiment pourquoi les utilise t-on.
Pout quelqu'un m'expliquer le POURQUOI ??
Merci

samedi 22 novembre 2008 à 12:18:46 | Re : Collections

ghuysmans99

Membre Club
On peut, par exemple, facilement énumérer des fichiers sans devoir définir un tableau de X éléments.
Ce qui rend évidemment plus facile d'utilisation
http://img404.imageshack.us/img404/7166/signaturegf4.gif

samedi 22 novembre 2008 à 16:14:44 | Re : Collections

PCPT

Administrateur CodeS-SourceS
salut,

l'utilisation la plus fréquente est en effet d'ajouter un élément (une chaine par exemple) comme dans un tableau, sans avoir à le redimensionner et donc à connaître ses limites....
dim c as new collection
c.add "s1"
c.add "s2"
c.add "s3"

...

un autre intérêt est de pouvoir associer des clés à chaque valeurs
c.add "s4", clef (voir F1)

aussi de pouvoir récupérer l'élément tant par sa position que sa valeur ou sa clé
x = c.items(clef)

et de pouvoir jouer facilement avec d'autres instances de classes
dim v as maclass
for each v in c
  debug.? v.une_de_mes_proprietes
next v



NB : la collection a donc beaucoup d'avantages, mais consomme énormément de ressources. il faut donc bien réfléchir à son utilité (dans le contexte) avant de commencer à coder...
++

Prenez un instant pour répondre à ce sondage svp 

samedi 22 novembre 2008 à 21:12:05 | Re : Collections

Orohena

Bonjour

Autre avantage, les membres d'une collection ne doivent pas nécessairement avoir le même type de données.

J'ai vu sur Internet une utilisation pratique de l'objet collection, comme dictionnaire de données pour la compression et la décompression d'images GIF.

Par exemple, pour reprendre l'exemple donné par PCPT, on peut chercher si le string clef est dans le dictionnaire par :

On Error Resume Next
x = c.items(clef)                              ' est-ce que clef est dans le dictionnaire ?
If Err <> 0 Then ...                           ' clef n'est pas dans le dictionnaire
       c.Add c.count + 257, clef          ' ajoute clef dans le dictionnaire

Mais je pense pour ma part qu'il est souvent préférable d'écrire soi-même un algo de tri, pour les raisons de performances données par PCPT.

Cordialement

lundi 24 novembre 2008 à 01:56:35 | Re : Collections

prince4878

Salut
Merci beaucoups pour les explications de proffessionnels, maintenant c'est 1000 fois plus clair :P
MAIS
je vouderai savoir pour quel but utilise t-on cette technique pour les applications des BDD ?
merci

lundi 24 novembre 2008 à 01:58:35 | Re : Collections

prince4878

Oups, une autre question.
donc si j'ai bien compris, cette technique ne sert qu'a creer des methods et des proprietes, et rien d'autre de plus ???

lundi 24 novembre 2008 à 03:20:19 | Re : Collections

PCPT

Administrateur CodeS-SourceS
Réponse acceptée !
salut,

non, pas pour "créer" des méthodes...
éventuellement y donner accès, donc d'un autre objet.
encore que comme indiqué, çà dépend du contexte...

quand on peut éviter de l'utiliser (la collection), on fait sans.
si dans ton code le but est simplement et uniquement de... t'éviter de vérifier le ubound d'un tableau, alors c'est que la conception de ton code est à revoir.

si tu as besoin d'avoir 10 éléments, mais parfois 5 ou 15...., la collection n'a aucune utilité

si tu veux faire un usercontrol comme une listbox, alors la collection peut avoir certains avantages


exemple rapide (sans vérification ou presque, et sans accessoire...), tu veux pouvoir ajouter (et donc écrire) des lignes une à une, et pouvoir en supprimer, çà donnerait :


DANS UN USERCONTROL, PAR DéFAUT

Option Explicit
Dim  oColl  As  New Collection

Public Sub  AddItem( ByVal  sStr  As String )
    oColl.Add sStr
    Me.Refresh
End Sub

Public Sub RemoveItem(ByVal Index As Integer)
    If (Index < 1Or (Index > oColl.Count) Then
        Err.Raise vbInteger Or vbObjectError, , "l'Index indiqué n'existe pas"
    Else
        oColl.Remove Index
        Me.Refresh
    End If
End Sub

Public Sub Clear()
    Do While oColl.Count
        oColl.Remove 1
    Loop
    Me.Refresh
End Sub

Public Sub Refresh()
    UserControl.Cls
    
    Dim As Variant
    
    For Each In oColl
        UserControl.Print CStr(v)
    Next v
End Sub

Private Sub UserControl_Initialize()
    UserControl.BackColor = vbBlue
    UserControl.BorderStyle = vbBSSolid
    UserControl.FontName = "Courier New"
    UserControl.ForeColor = vbWhite
End Sub

Private Sub UserControl_Terminate()
    Me.Clear
    Set oColl = Nothing
End Sub

Coloration VB6, VBA, VBS



DANS UNE FORM, PAR DéFAUT, POSE l'UC (nommé donc UserControl11) ET 2 BOUTONS

Option Explicit
Private Sub  Form_Load()
    Command1.Caption = "ajoute heure"
    Command2.Caption = "supprime"
End Sub

Private Sub Command1_Click()
    UserControl11.AddItem CStr(Time)
End Sub

Private Sub Command2_Click()
    On Error Resume Next
    UserControl11.RemoveItem Val(InputBox("Saisissez le numéro de l'item à supprimer", , "1"))
    If Err.Number Then MsgBox Err.Number & " : " & Err.Description, vbExclamation, "Erreur du Usercontrol"
End Sub

Coloration VB6, VBA, VBS



VISUELLEMENT POUR LES CURIEUX





bref ce n'est qu'un exemple, ici il aurait été difficile de supprimer uniquement la ligne 3 d'un tableau.
pas impossible bien sûr, mais dans ce cas précis, la collection est préférable (pour répondre à ta première question ^^)


c'est à force d'utilisation que tu sauras faire le choix "collection ou autre".
en attendant si çà peut t'aider, décris-nous peut-être ton besoin...., on saura te dire comme t'en passer
++

Prenez un instant pour répondre à ce sondage svp 

lundi 24 novembre 2008 à 03:27:07 | Re : Collections

PCPT

Administrateur CodeS-SourceS
ps : pour une BDD, tu n'aurais pas besoin de collection....
ton RS t'en renvoie déjà une, celle des FIELDS. donc aucun besoin.
et si tu voulais récupérer tous les enregistrements d'un champ par exemple, un tableau, redimentionné sur le recordcount, et rempli à la volée
donc pas besoin de collection dans la majeure partie des cas ;)
++

mardi 25 novembre 2008 à 01:38:44 | Re : Collections

prince4878

Salut
bein PCPT, je ne sais vraiment pas quoi te dire apres avoir ( et vu    -j'en fais partie-)
merci beaucoup pout toutes ses explications

Boncourage




Cette discussion est classé dans : collections


Répondre à ce message

Sujets en rapport avec ce message

collections [ par hegoak ] comment faire une collection avec tous les fichiers d'un répertoire URGENT !!! Problème de collections [ par ols ] Etant habitué à la conception objet C++, un problème s'oppose à moi.Décor:J'ai définit un type d'objet TTypeVin à partir duquel j'ai fait une collecti Collections en ASP [ par Muad-Dib ] Salut tout le monde,J'ai créé une dll d'Apis dont l'une d'entre elle requiert une variable de type collection.Mon problème : je ne sais pas déclarer d Collections dans contrôles ActiveX [ par Jon2001 ] Salut,Je cherche désespérément à créer des collections de contrôles dans un autre contrôle.Exemple : Treeview (un contrôle) possède une collection de detection erreurs-collections [ par neo3015 ] voici le code : Dim newCh As New Chainon Dim tmpChs As Variant Dim saveChs As Variant newCh.dbTableName = dbTable newCh.dbVarName Collections de classes en VB [ par aKheNathOn ] J'ai codé une classe ayant des evenements, maintenant j'ai besoin de la dupliquer X fois, comme je le ferais avec un groupe de controles... seulement Re : Impression [ par Geff ] Apparement tu as oublié d'instancier un objet!genre :: System.Collections.ArrayList MyList= new System.Collections.ArrayList();c juste un exemple mais Stockage objet dans BdD [ par leludo ] Bonjour,Je suis débutant en VB6 et n'ai pas une grande expérience des BdD et je voudrais stocker des objets dans une base de données pour pouvoir ensu


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,888 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.