Laatste record als eerst weergeven in formulier

Status
Niet open voor verdere reacties.

Bavaria

Gebruiker
Lid geworden
14 okt 2004
Berichten
126
Beste,

In mijn database heb ik een doorlopend formulier gemaakt waarin gegevens opgeslagen kunnen worden. Echter wanneer een nieuwe record wordt toegevoegd dan komt er onderin het formulier een nieuwe record. Is het mogelijk om dit record bovenaan weer te geven?

Gr.
 
Bij mijn weten kan dat niet; nieuwe records staan altijd ondering. Wel kun je, als je alleen records wilt toevoegen met een formulier, de eigenschap <Gegevensinvoer> van dat formulier op Ja zetten. Dan heb je één in te voeren record, en dat staat uiteraard ook bovenaan ;)

Je zou daar bijvoorbeeld een extra subformulier voor kunnen maken, dat je op een vaste plek neerzet. Het bladerformulier gebruik je dan alleen om te bladeren door de records, dus met de eigenschap <Toevoegen toestaan> op Nee. Het nieuwe formulier zet je erboven.
 
Op zich een goede oplossing maar kan ik dat 'blader formulier' wel sorteren op bijv. de datum? zodat de laatste toegevoegd als eerste weergegeven wordt?

Thanx! :)

Gr.
 
Dat kan altijd, want je kunt op een formulier aangeven hoe je wilt sorteren.
Ik zet vaak bij een formulier kopjes in de koptekst, waarmee je m.b.v. een functie de sortering kunt regelen.
Als je daar belangstelling voor hebt, wil ik de code wel posten.
 
Komt-ie:
Je hebt een functie, die er zo uitziet:

Code:
Function fSort(frmName As String, fldName As String)

If Forms(frmName).OrderBy = fldName Then
    Forms(frmName).OrderByOn = True
    Forms(frmName).OrderBy = fldName & " DESC"
Else
    Forms(frmName).OrderByOn = True
    Forms(frmName).OrderBy = fldName
End If

End Function

Die zet je op een willekeurige module, maakt niet uit.

In je formulier zet je Labels in de koptekst. Die maak je een beetje mooi op, zodat ze er uitzien als knoppen. (hoeft uiteraard niet...)
Achter de labels zet je deze code bij de gebeurtenis <Bij klikken>

fSort "frmLijst", "Achternaam"

En dat doe je voor elke kolom waarop je wilt (laten) sorteren.
 
Ik heb zelfs nog een mooiere variant gemaakt, waarbij je de sorteervolgorde kunt baseren op meer dan één veld:

Dit is de functie:

Code:
Function fSort(frmName As String, fldName As String)
Dim sTmp() As String, i As Integer, sSort As String
sSort = ""

If Forms(frmName).OrderBy = fldName Then
    Forms(frmName).OrderByOn = True
    If InStr(1, fldName, ",") > 0 Then
        sTmp = Split(fldName, ",")
        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
        Forms(frmName).OrderBy = sSort
    Else
        Forms(frmName).OrderBy = fldName & " DESC"
    End If
Else
    Forms(frmName).OrderByOn = True
    Forms(frmName).OrderBy = fldName
End If

End Function

En zo roep je hem aan:

Code:
Private Sub lblDatum_Click()
Dim fldName As String, fOrderBy As String, fSort As String

    fOrderBy = Me.Form.OrderBy
    If InStr(1, fOrderBy, "DESC") = 0 Then
        fldName = "Datum DESC, DagdeelID ASC"
    Else
        fldName = "Datum, DagdeelID"
    End If
    Me.Form.OrderByOn = True
    Me.Form.OrderBy = fldName

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan