Quel metodo per filtrare ancorché sia funzionante è disfunzionale... per prestazioni.
Si usa un metodo più tecnico sfruttando la proprietà FILTER di maschera.
Dim strWH As String
If Len(Me!ComboCompleta.Value & vbNullstring)>0 Then strWH=strWH & "IdPK=" & Me!Controllo1.Value& " AND " ' Numerico
If Len(Me!ComboCognome.Value & vbNullstring)>0 Then strWH=strWH & "Cognome='" & Replace(Me!ComboCognome.Value,"'","''") & " AND "
.... ' aggiungi le altre N condizioni...
If Len(strWH)>0 then strWH=Mid$(strWH,1,Len(strWH)-5)
Me.Filter=strWH
Me.FilterON=True
Poi lo passi al report con la chiamata OpenReport