La maschera di scelta...
il codice relativo al click
Private Sub cmdreport_Click()
Dim eff, strwhere As String
'carichiamo la where dell'apertura del report
If Me.optEff = 2 Then
eff = ""
Else
eff = "and Efficiente=" & Me.optEff
End If
If Me!lstgruppi.ItemsSelected.Count = 0 Then
MsgBox "Devi effettuare una scelta tra i gruppi, oppure selezionarli tutti dal box in alto!", vbCritical, "ATTENZIONE"
Exit Sub
End If
If Me!lstSG.ItemsSelected.Count = 0 Then
MsgBox "Devi effettuare una scelta tra gli stati giuridici, oppure selezionarli tutti dal box in alto!", vbCritical, "ATTENZIONE"
Exit Sub
End If
If Me!lstcategoria.ItemsSelected.Count = 0 Then
MsgBox "Devi effettuare una scelta tra le categorie, oppure selezionarli tutti dal box in alto!", vbCritical, "ATTENZIONE"
Exit Sub
End If
strwhere = "CATEGORIA IN(" & Filltesto(Me!lstcategoria) & ") and IDStatoGiuridico IN(" & Fillnumeri(Me!lstSG) & ") " & _
" and IDGruppo IN(" & Fillnumeri(Me!lstgruppi) & ")" & eff
Dim ord0, ord1 As String
Select Case Left(Me!cbosel0gr, 1)
Case Is = "g"
ord0 = "NomeGruppo"
Case Is = "c"
ord0 = "CATEGORIA"
Case Is = "s"
ord0 = "NomeStatoGiuridico"
End Select
Select Case Left(Me!cbosel1gr, 1)
Case Is = "g"
ord1 = "NomeGruppo"
Case Is = "c"
ord1 = "CATEGORIA"
Case Is = "s"
ord1 = "NomeStatoGiuridico"
End Select
DoCmd.OpenReport "RptElenco", acViewDesign, , , acHidden
Reports!rptelenco.GroupLevel(0).ControlSource = ord0
Reports!rptelenco.GroupLevel(1).ControlSource = ord1
Reports!rptelenco.OrderBy = Me.cboselord1
DoCmd.Close acReport, "RptElenco", acSaveYes
DoCmd.OpenReport "RptElenco", acViewPreview, , strwhere, acDialog
End Sub
e quello relativo alla formattazione delle due sezioni di raggruppamento
Option Compare Database
Option Explicit
Private Sub IntestazioneGruppo0_Format(Cancel As Integer, FormatCount As Integer)
Me!txtgruppo0 = Me.Controls(Me.GroupLevel(0).ControlSource)
Me!txtgruppo0eti.Caption = Forms!FrmScegliElenco!cbosel0gr.Value
End Sub
Private Sub IntestazioneGruppo1_Format(Cancel As Integer, FormatCount As Integer)
Me!txtgruppo1 = Me.Controls(Me.GroupLevel(1).ControlSource)
Me!txtgruppo1eti.Caption = Forms!FrmScegliElenco!cbosel1gr.Value
End Sub
trovo ancora difficoltà ad assegnare un 2 campo per ordinare... anche componendo la stringa orderby è come se accettasse solo il primo campo
è gradita un indicazione su miglioramenti di codice e su quanto segnalato prima...ovvero la possibilità di raggruppare solo per il primo valore
PS: mi sono permesso di modificare il famoso fillitems per accettare anche valori di testo tra virgolette...