• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Efficient zoeken naar data uit collectie

Status
Niet open voor verdere reacties.

NogGeenGuru

Gebruiker
Lid geworden
5 aug 2015
Berichten
130
Beste Helpers,

In Excel laad ik gegevens in die binnenkomen vanuit txt-bestanjes.
Deze data wordt toegevoegd aan een collectie.

Hiervoor gebruik ik steeds 2 Classes.
De eerste houdt enkel de gegevens van de entiteit, de tweede is een lijst van de eerste class.

Bijvoorbeeld:

Class Persoon:
Code:
Public Voornaam as string
Public Achternaam as string
Public IsMannelijk as boolean
Public Woonplaats as string

Class Personen
Code:
Private LijstPersoon As Collection

Private Sub Class_Initialize()
    Set LijstPersoon = New Collection
End Sub

Private Sub Class_Terminate()
    Set LijstPersoon = Nothing
End Sub

Public Sub add(Record As Persoon)
    LijstPersoon .add Record
End Sub

Public Sub Remove(Index As Variant)
    LijstPersoon .Remove Index
End Sub

Public Property Get Item(Index As Variant) As Persoon
    Set Item = LijstPersoon .Item(Index)
End Property

Public Property Get Count() As Long
    Count = LijstPersoon .Count
End Property

Public Sub Clear()
    Set LijstPersoon = New Collection
End Sub

Nu wil ik deze data vervolgens filteren, zoals je dit bijv. in een SQL-database zou doen.
In dit geval zou je dus kunnen zeggen dat ik bijvoorbeeld een lijst zou willen zien van alle mannen in Amsterdam.

Ongeveer zoals:
Code:
SELECT * FROM Personen WHERE IsMannelijk = true and Woonplaats = Amsterdam;

Is het bijvoorbeeld mogelijk om deze collecties om te zetten naar een recordset en hierop SQL toe te passen?
Of misschien een hele andere methode die iets soort gelijks toe staat?

Op dit moment maak ik gebruik van loops en IF-statements om de juiste gegevens te vinden,
maar dit moet dus voor totaal achttien collecties met elk grote hoeveelheden aan data waardoor dit loopen erg traag wordt... :(


Is er iemand die hier een mooie oplossing voor weet?
 
Dankjewel alphamax!

Als ik de collecties op een tabblad plaats dan kan de uitwerking van de eerste link gebruikt worden om gemakkelijk te filteren.

Is er ook een mogelijkheid om dit direct toe te passen in een collectie?
dus zonder deze eerst op een tabblad te plaatsen?
 
Zie hier:

http://www.snb-vba.eu/VBA_Collection.html#L_7


Maar: als je wil filteren is een Dictionary veel praktischer dan een Collection.

Overigens zie ik niet in waarom je niet gewoon de .txt bestanden inleest in Excel en daar van alle filter & sorteerfaciliteiten gebruik maakt.
 
Laatst bewerkt:
voor wat betreft jouw vraag uit post#3: voeg een Eigen filter funktie toe aan de Klasse
(ik neem aan dat je in jouw klasse wat 'verborgen' attributes hebt staan? (import middels notepad?)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan