Sorteren op NavigatieSubformulier

Status
Niet open voor verdere reacties.

PaulWar

Gebruiker
Lid geworden
23 feb 2012
Berichten
6
Ik probeer op een Navigatieformulier een functie werkend te krijgen om gegevens te kunnen sorteren door op een Bijschrift te klikken (in dit geval Plaats). Op het oorspronkelijke formulier werkte dat prima, maar nu ik dat in een Navigatieformulier heb geplaatst niet meer. Dat zal ongetwijfeld te maken hebben met de verwijzing, maar hoe kan ik naar dat navigatiesubformulier verwijzen?
Bij klikken wordt de volgende functie aangeroepen:

Code:
Private Sub Bijschrift13_Click()
  fSort Me.Form.Name, "Plaats"
End Sub

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

Er is een formulier Hoofdmenu als navigatieformulier waarin het frmLevHoofd is geplaatst. Bij klikken krijg ik nu de melding dat frmLevHoofd niet gevonden kan worden. Dat is op zich wel logisch want die staat ook niet open.
Iemand enig idee?
Alvast bedankt.
 
Je kunt de functie beter ombouwen en niet meer naar de naam van het formulier verwijzen maar naar het formulier als object.
 
Oké, dank je wel. Dat was in ieder geval (heel snel) een zet in de goede richting. Ik ben net begonnen met het verkennen van de mogelijkheden van VBA en begrijp nog lang niet alles. Ik krijg het in ieder geval werkend door in de functie de verwijzing aan te passen. Hoe ik dat als object moet doen weet ik nog niet, maar daar kom ik nog wel een keer achter.

Code:
Function fSort(frmName As String, fldName As String)
Dim sTmp() As String, i As Integer, sSort As String
sSort = ""
'objHoofdmenu = Forms!Hoofdmenu!NavigatieSubformulier.Form
'If Forms(frmName).OrderBy = fldName Then
'If objHoofdmenu.OrderBy = fldName Then
If Forms!Hoofdmenu!NavigatieSubformulier.Form.OrderBy = fldName Then
    'Forms(frmName).OrderByOn = True
    Forms!Hoofdmenu!NavigatieSubformulier.Form.OrderBy = 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
        Forms!Hoofdmenu!NavigatieSubformulier.Form.OrderBt = sSort
    Else
        'Forms(frmName).OrderBy = fldName & " DESC"
        Forms!Hoofdmenu!NavigatieSubformulier.Form.OrderBy = fldName & " DESC"
    End If
Else
    'Forms(frmName).OrderByOn = True
    Forms!Hoofdmenu!NavigatieSubformulier.Form.OrderByOn = True
    'Forms(frmName).OrderBy = fldName
    Forms!Hoofdmenu!NavigatieSubformulier.Form.OrderBy = fldName
End If
End Function
 
Dit is inderdaad niet de beste optie :). Kijk maar eens hoe vaak je dezelfde string nodig hebt...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan