Ciao a tutti e buona domenica. Avrei la necessità di ordinare un report in maniera dinamica a seconda dei criteri scelti dall'utente tramite una maschera.

I parametri sono un menù a tendina che comprende tre opzioni più un radio button per scegliere se l'ordinamento debba essere crescente o decrescente.

Ho fatto la mia bella ricerchina su internet e ho trovato quest'utile link

http://allenbrowne.com/ser-33.html

Ho adattato il codice alle mie necessità in questo modo associando all'evento apertura del report il seguente codice:

codice:
Private Sub Report_Open(Cancel As Integer)

' verifico su quale campo l'utente desidera effettuare l'ordinamento
Select Case Forms![apriReport2].cmbCampo.Value


Case "cognome"
        Me.GroupLevel(0).ControlSource = "cognome"
        
        ' verifico se l'ordinamento prescelto è crescente o decrescente
        Select Case Forms![apriReport2].grpOrd.Value
        Case 1
        Me.GroupLevel(0).SortOrder = False 'default crescente
        Case 2
        Me.GroupLevel(0).SortOrder = True 'decrescente
        End Select
        
        Me.GroupLevel(1).ControlSource = "nome"
        Me.GroupLevel(2).ControlSource = "invalidita"

Case "nome"
        Me.GroupLevel(0).ControlSource = "nome"
        
        Select Case Forms![apriReport2].grpOrd.Value
        Case 1
        Me.GroupLevel(0).SortOrder = False
        Case 2
        Me.GroupLevel(0).SortOrder = True
        End Select
        
        Me.GroupLevel(1).ControlSource = "cognome"
        Me.GroupLevel(2).ControlSource = "invalidita"

Case "invalidità"
        Me.GroupLevel(0).ControlSource = "invalidita"
        
        Select Case Forms![apriReport2].grpOrd.Value
        Case 1
        Me.GroupLevel(0).SortOrder = False
        Case 2
        Me.GroupLevel(0).SortOrder = True
        End Select
        
        Me.GroupLevel(1).ControlSource = "cognome"
        Me.GroupLevel(2).ControlSource = "nome"

End Select


End Sub
Ciò che vorrei sapere è se è possibile snellire il codice relativo alla modalità di ordinamento (crescente o decrescente) senza essere costretto a ripetere tutto il codice per ciascuna possibilità.

Ho provato a mettere questo codice

Select Case Forms![apriReport2].grpOrd.Value
Case 1
Me.GroupLevel(0).SortOrder = False 'default crescente
Case 2
Me.GroupLevel(0).SortOrder = True 'decrescente
End Select

verso la fine della sub prima della chiusura dell'altro case ma l'ordinamento non viene più rispettato. Concludendo, è perfettibile il codice o si è obbligati a ripetere il codice relativo all'ordinamento per ciascuna voce?

Grazie per l'attenzione.