Buona Domenica a tutti, vi scrivo poichè non riesco a gestire questa tipologia di filtro dinamico o in parte, mi spiego.
Ho una form non collegata tramite campi master alla sottomaschera. Nella sottomaschera, visualizzo le info relative alla tblAnagrafiche con una semplice query di selezione delle varie informazioni con una serie di iif presenti anche nel recordsource della form principale.
Nella form invece, ho creato una serie di campi textbox dove vado a filtrare i campi nella sottomaschera tramite una funzione impostando quindi anche la record source. La funzione e quindi il recordsource è impostato così:
Function SearchCriteria()
Dim DenomStr, CfPivaStr, TelStr, CellStr As String
Dim task, strCriteria As String
If IsNull(Me!txtRagDenom) Then
DenomStr = "IIf([Ragione Sociale] Is Null,[Cognome]+' '+[Nome],IIf([Ragione Sociale] Is Not Null,[Ragione Sociale])) Like '*'"
Else
DenomStr = "IIf([Ragione Sociale] Is Null,[Cognome]+' '+[Nome],IIf([Ragione Sociale] Is Not Null,[Ragione Sociale])) Like ""*"" & txtRagDenom & ""*"""
End If
If IsNull(Me!txtCFPiva) Then
CfPivaStr = "(IIf([PIva] Is Null,[CF],IIf([PIva] Is Not Null,[CF]+' - '+[PIva])) Like '*')"
Else
CfPivaStr = "(IIf([PIva] Is Null,[CF],IIf([PIva] Is Not Null,[CF]+' - '+[PIva])) Like ""*"" & txtCFPiva & ""*"")"
End If
If IsNull(Me!txtTel) Then
TelStr = "(IIf([Telefono2] Is Null,[Telefono1],IIf([Telefono2] Is Not Null,[Telefono1]+' - '+[Telefono2])) Like '*')"
Else
TelStr = "(IIf([Telefono2] Is Null,[Telefono1],IIf([Telefono2] Is Not Null,[Telefono1]+' - '+[Telefono2])) Like ""*""& txtTel & ""*"")"
End If
If IsNull(Me!txtCell) Then
CellStr = "(IIf([CellularePersonale2] Is Null,[CellularePersonale1],IIf([CellularePersonale2] Is Not Null,[CellularePersonale1]+' - '+[CellularePersonale2])) Like '*')"
Else
CellStr = "(IIf([CellularePersonale2] Is Null,[CellularePersonale1],IIf([CellularePersonale2] Is Not Null,[CellularePersonale1]+' - '+[CellularePersonale2])) Like ""*""& txtCell & ""*"")"
End If
strCriteria = DenomStr & "And" & CfPivaStr & "And" & TelStr & "And" & CellStr
task = "SELECT tblAnagrafiche.IDAnagrafica, IIf([Ragione Sociale] Is Null,[Cognome]+' '+[Nome],IIf([Ragione Sociale] Is Not Null,[Ragione Sociale])) AS Denominazione, tblAnagrafiche.Cliente, tblAnagrafiche.Fornitore, tblAnagrafiche.Dipendente, tblAnagrafiche.Attiva, IIf([Telefono2] Is Null,[Telefono1],IIf([Telefono2] Is Not Null,[Telefono1]+' - '+[Telefono2])) AS Telefono, IIf([CellularePersonale2] Is Null,[CellularePersonale1],IIf([CellularePersonale2] Is Not Null,[CellularePersonale1]+' - '+[CellularePersonale2])) AS Cellulare, tblAnagrafiche.Email1, tblAnagrafiche.Fax, IIf([PIva] Is Null,[CF],IIf([PIva] Is Not Null,[CF]+' - '+[PIva])) AS CodFisPiva FROM tblAnagrafiche where " & strCriteria
Me.[FormContattiElenco].Form.RecordSource = task
Me.[FormContattiElenco].Form.Requery
Dopo l'aggiornamento dei vari campi textbox, viene richiamata la funzione e tutto funziona se non chè, laddove cerco di filtrare i dati tramite la txtTel o txtCell la sottomaschera mi restituisce la schermata vuota laddove sia il campo Cf o Piva sono vuoti...come potrei eludere la cosa? Cosa manca nel codice?
EDIT.
I campi PIva e CF prevedono come formato di input rispettivamente AAAAAAAAAAA;;_ e AAAAAAAAAAAAAAAA;;_