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.