Macro "Sorteren"

Status
Niet open voor verdere reacties.

vdbergha

Gebruiker
Lid geworden
19 aug 2007
Berichten
13
Ik wil een macro maken om mijn records in mijn tabel te sorteren.
Welke acties moet in deze macro gebruiken ?
 
Als je echt een macro wilt gebruiken, ben ik weg. Wil je e.e.a. vanuit VBA kunnen programmeren, dan kan ik je wel helpen. En dan kun je gelijk je vraag wat verder verduidelijken, want hoe zie je dat sorteren precies voor je? Sorteren doe je namelijk altijd op minstens één veld. Maar voor hetzelfde geld wil je op meerdere velden tegelijk sorteren.
 
Ik wil een knop plaatsen in mijn formulier waarmee ik mijn records in een tabel kan sorteren op één veld (Titel).
Als dit in VBA is oké, als ik dit maar aan een knop kan koppelen.
In ieder geval bedankt voor de interesse. :thumb:
 
Persoonlijk zou ik daar nooit een knop voor gebruiken; formulieren met teveel knoppen zijn alleen maar verwarrend voor een gebruiker. Wat veel logischer is, is sorteren d.m.v. klikken op een label. Ik neem aan dat je het hebt over een doorlopend formulier (in je vraag heb je het over een tabel, maar daar kan je geen knop op zetten en kun je sowieso al sorteren op de kolomkoppen). Ik doe het dus zelf altijd op basis van de kolomkoppen die in een doorlopend formulier boven de velden staan. Die krijgen dan een code die een functie aanroept. Voorbeeldje met 3 labels:
Code:
Private Sub medewerker_naam_Bijschrift_Click()
    fSort Me, "medewerker_naam"
End Sub

Code:
Private Sub Bijschrift4_Click()
    fSort Me, "rechten"
End Sub

Code:
Private Sub Bijschrift5_Click()
    fSort Me, "Actief"
End Sub

De code is dus vrij simpel aan te roepen; elk label roept de functie fSort aan, met twee parameters: het formulier (Me) en de sorteren veldnaam. Die wisselt uiteraard bij elk label. De functie staat in een aparte module, en ziet er zo uit:

Code:
Function fSort(frm As Form, fld As String)
Dim sTmp() As String, i As Integer, sSort As String
    sSort = ""
    If frm.OrderBy = fld Then
        frm.OrderByOn = True
        If InStr(1, fld, ",") > 0 Then
            sTmp = Split(fld, ",")
            For i = 0 To UBound(sTmp)
                sTmp(i) = Trim(sTmp(i))
                If i = 0 Then
                    sSort = sSort & sTmp(i) & " DESC"
                Else
                    sSort = sSort & sTmp(i) & " ASC"
                End If
                If i < UBound(sTmp) Then sSort = sSort & ", "
            Next i
            frm.OrderBy = sSort
        Else
            frm.OrderBy = fld & " DESC"
        End If
    Else
        frm.OrderByOn = True
        frm.OrderBy = fld
    End If
End Function

En dat werkt als een tierelier. Elke keer als je een veld wilt sorteren in een formulier, maak je dus een <Bij klikken> gebeurtenis. En de enige opdracht die je daar neer zet is: fSort Me, "[veldnaam]"
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan