Quando metti [Me.Filter] nel parametro WHERE della Funzione OpenReport, non è per attivare la proprietà FILTER, ma è per passare come stringa la proprietà FILTER di MASCHERA al parametro WHERE, che poi il REPORT in apertura applica alla proprietà FILTER dello stesso.
Quindi, ricordando che è un dato STRINGA, quando utilizzi questa SINTASSI
DoCmd.OpenReport "Report Equipaggiamenti Terrestri", acViewPreview, , Me.FilterOn = False
stai scrivendo un'abominio... insensato.
Ovvio che se non hai nessun FILTRO, è inopportuno passare il dato, quindi sarebbe più indicato fare una cosa simile:
If Me.FilterOn=True then
If Len(Me.Filter)>0 Then
DoCmd.OpenReport "Report Equipaggiamenti Terrestri", acViewPreview, , Me.Filter
Else
DoCmd.OpenReport "Report Equipaggiamenti Terrestri", acViewPreview
End If
Else
DoCmd.OpenReport "Report Equipaggiamenti Terrestri", acViewPreview
End If
oppure in ottica di scrittura più intelligente:
Dim blFilter As Boolean
blFilter=Len(Me.Filter)>0
If Me.FilterOn AND blFilter Then
DoCmd.OpenReport "Report Equipaggiamenti Terrestri", acViewPreview,,Me.Filter
Else
DoCmd.OpenReport "Report Equipaggiamenti Terrestri", acViewPreview
End if
Sinceramente non ho capito cosa devi fare... vedi tu...