Flex ha scritto:
ho dato un'occhiata, ti dirò la verità, ho capito ben poco, ....
Dopo averti complicato ben bene le idee ho riorganizzato le idee e trovato una strada più semplice, che va bene per il caso specifico e che ti permette di avvicinarti al "meccanismo", migliorabile con OpenArgs quando avrai maggiore padronanza.
Premesse: il tutto funziona solo se l'apertura del report avviene tramite il pulsante presente nella maschera o almeno a maschera aperta e con la casella di controllo già valorizzata.
Definizioni:
1) nome della maschera da cui si apre il report: frmApriReport
2) nome della casella di controllo = chkBox
3) nome del report principale = rptMain
4) nome del controllo che contiene il sottoreport1 = rptSub1 (che non è il nome del subReport, l'ho impostato io a mano proprio per tenere distinti i due "oggetti")
5) nome del controllo che contiene il sottoreport2 = rptSub2 (con le stesse precisazioni del punto 4)
Impostazioni particolari:
1) la casella di controllo deve essere spuntata o bianca, non quel "grigio" che indica che non è né True né False (anche se si potrebbe gestire, ma semplifichiamo)
2) per i controlli rptSub1 e rptSub2 e per la sezione Corpo di rptMain (dove sono inseriti i due sottoreport) le proprietà Espandibile e Riducibile devono essere impostate a Sì (occhio che Riducibile di default è No)
Comportamento: con chkBox NON spuntato (false) stampa (o meglio, visualizza in stampa) solo il primo subreport; con chkBox spuntato stampa (o meglio, visualizza in stampa) solo il secondo subreport.
Codice dell'evento Open di rptMain
Private Sub Report_Open(Cancel As Integer)
Me!rptSub1.Visible = Not Forms!frmApriReport!chkBox.Value
Me!rptSub2.Visible = Not Me!rptSub1.Visible
End Sub
Da qui si può solo migliorare. (avrebbe poco senso peggiorare)