Realizzare funzionalita' not include su ricerca in stringhe

di il
2 risposte

Realizzare funzionalita' not include su ricerca in stringhe

Buona sera,
chiedo un piccolo aiuto per finalizzare il mio DB.
Ho trovato in rete un filtro di ricerca denominato Ricerca2k (credo realizzato da Alex) e l'ho riadattato con piccolissimi cambiamenti alle mie necessita'.
Esso contiene (in VBA) una funzione Find () che come condizioni offre le possibilita' <, >, <>, =, include, Start with , End with
sulle stringhe che si possono inserire nei campi della maschera di ricerca.
Vorrei sapere se e come si puo' realizzare (modificando o aggiungendo al codice parziale che segue) anche la condizione not include
per ottenere come risultato quei record nei cui campo/i non e' presente la stringa da me inserita.
Private Function Find()
    Dim rs      As DAO.Recordset
    Dim strWH   As String
    Dim mC      As Object
    Dim sCrit   As String
    Dim sOper   As String
    Dim sName   As String
    Dim sVal    As String
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM List WHERE 1=0")
    
    For Each mC In colControls
       If mC.Control.Tag = "FILTRO" Then
          If Len(mC.Control.Value & "") > 0 Then
             sName = "[" & mC.Control.Name & "]"
             sCrit = Nz(mC.ControlCriteria.Value, "=")
             sOper = " " & Nz(mC.ControlOperator.Value, "AND") & " "
             Select Case rs.Fields(mC.Control.Name).Type
                Case dbText, dbChar, dbMemo
                    sVal = Replace(mC.Control.Value, "'", "''")
                    If sCrit = "Include" Then
                        sCrit = " LIKE "
                        sVal = "*" & sVal & "*"
                    ElseIf sCrit = "Start_with" Then
                        sCrit = " LIKE "
                        sVal = sVal & "*"
                    ElseIf sCrit = "End_with" Then
                        sCrit = " LIKE "
                        sVal = "*" & sVal
                    End If
                    sVal = "'" & sVal & "'"
                Case dbDate
                    sCrit = " " & sCrit
                    sVal = Format(mC.Control.Value, "\#yyyy\-mm\-dd\#")
                Case Else
                    sCrit = " " & sCrit
                    sVal = mC.Control.Value
             End Select
             
             strWH = strWH & sName & sCrit & sVal & sOper
          End If
       End If
    Next
    Set mC = Nothing
    rs.Close
    Set rs = Nothing
    If Len(strWH & "") = 0 Then Exit Function
    strWH = Mid$(strWH, 1, Len(strWH) - Len(sOper))
    strWH = "SELECT * FROM List WHERE " & strWH
    CurrentDb.QueryDefs("qrySearch").SQL = strWH
    DoCmd.OpenForm "Search_Results"
Grazie mille per l'aiuto viste le mie minime conoscenze di VBA.

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte