caterebo ha scritto:
Ho provato così
Private Sub Report_Load()
If Me.Ferramenta.Report.HasData = True Then
Me.InterruzionePagina2.Visible = False
Else
Me.InterruzionePagina2.Visible = True
End If
End Sub
...
Errore di run-time'2467': l'oggetto a cui si fa riferimento nell'espressione è stato chiuso o eliminato.
Perchè?
...
Viene evidenziata la prima riga (If Me.Ferramenta.Report.HasData = True Then)
il Report principale si chiama Pianificazione
I sub report sono: Ferramenta, Materiali ,Manodopera
Il Load del codice l'ho messo nel report principale (Pianificazione)
Con queste informazioni si può cominiciare a ragionare.
I sottoreport non erano 4? Almeno così avevi scritto nel primo post.
In generale, credo che l'impostazione da seguire sia questa:
If Me.Ferramenta.Report.HasData = True Then
Me.InterruzionePagina2.Visible = True
Else
Me.InterruzionePagina2.Visible = False
End If
quindi invertita rispetto alla tua idea di partenza. Cioè se il subreport contiente dati (HasData = True) allora devi lasciare anche la relativa interruzione di pagina (InterruzionePagina.Visible = True)
Potresti anche scrivere
Me.InterruzionePagina2.Visible = Me.Ferramenta.Report.HasData
L'evento su cui fare questa verifica però non è Load ma Format o Print della sezione in cui si trovano i sottoreport (solitamente nella corpo del report principale). Prova prima su Format, poi passa a Print e vedi se il risultato è identico o quale dei due dà quello che ti aspetti.
Consiglio di dare nomi più significativi alle interruzione di pagina, per capire subito a quale subreport sono abbinate, del tipo
subreport Ferramenta -> InterrPag_Ferramenta
Prova a dare una sistemata al tutto e vediamo se ci sono ancora problemi.