Ciao, se posso permettermi… giusto un paio di cosucce.
C’è un po’ di confusione e di errorini basici
Per esempio:
- La Me.Requery non seve ai fini dell’azione Filter
- Se sei su Maschera la Me.Requery non serve
- Se sei su Maschere Continue la Me.Requery non serve
- se devi fare il refresh di una Sub Form allora Me,SubForm.Requery
- Dopo l’impostazione Filter è bene anche impostare il FilterOn = True
- La LIKE richiede il passaggio degli Asterischi che vanno a racchiudere la stringa da ricercare
- un solo * iniziale per la ricerca “Finiscecon”
- un solo * alla file per la ricerca "Inizia con"
- due * per la ricerca “in Parte” (che contiene la stringa da ricercare)
Nel tuo caso … Esempio:
Me.Filter = "[DESCRIZIONE] Like '*" & z1 & "*'"
Me.FilterOn = True
Mentre in questa parte di codice c’è un po’ di confusione e dichiarazioni un po’ strane e inutili
Private Sub filtro_bpark_AfterUpdate()
Dim bp As Long
Dim stringaSQL2 As String, variabile As Integer
bp = Me.filtro_bpark
Me.Filter = "[ID_BPark]= " & bp
Me.FilterOn = True
Me.Requery
filtro_lotto.Value = Null
variabile = bp
stringaSQL2 = "SELECT A0100_Lotti.ID_Lotti, A0100_Lotti.Nome1 FROM A0100_Lotti, D0000_Coll_B_Park_Lotti WHERE (((A0100_Lotti.ID_Lotti)=[D0000_Coll_B_Park_Lotti].[Lotti]) AND ((D0000_Coll_B_Park_Lotti.B_Parks) =" & bp & "));"
filtro_lotto.ColumnCount = 2
filtro_lotto.ColumnWidths = "0in.;1in."
filtro_lotto.RowSourceType = "Table/Query"
filtro_lotto.RowSource = stringaSQL2
End Sub
Assegnare un nome ad una variabile come variabile… fa un po’ strano e non si capisce cosa sia variabile
Idem per altre dichiarazioni.
Se dichiari un Integer per esempio usare: intTuoNome
per una variabile Long per esempio: lngTuoNome
per una variabile Stringa per esempio: strTuoNomeù
Esempio:
Dim intVariabile As Integer
Dim lngBl As Long
Dim strSql2 As String
Quando si dichiarano le variabili, oggetti, etc… il nome assegnato deve, a colpo d’occhio, ricondurre (far capire) al tipo di variabile dichiarata senza dover andarsi a cercare nel codice dove e quando è stata definita per capire di cosa si tratta.
Insomma, va risistemato un po’ tutto, la scrittura, la logica, le dichiarazioni, l’assegnazione dei nomi alle variabili, etc…
Poi per carità, in qualche modo le due righe di codice funzioneranno pure, …ma così non si fa! ..per essere garbati diciamo che è incomprensibile? ;))
A scanso di equivoci potrei anche riscriverti il codice da te postato… però non sarebbe giusto ;))
…Chissà perchè, ma non c'è neanche una Dim o variabili da dichiarare.
Private Sub filtro_bpark_AfterUpdate()
' set data source
filtro_lotto.RowSource = "SELECT A0100_Lotti.ID_Lotti, A0100_Lotti.Nome1 FROM A0100_Lotti, D0000_Coll_B_Park_Lotti WHERE (((A0100_Lotti.ID_Lotti)=[D0000_Coll_B_Park_Lotti].[Lotti]) AND ((D0000_Coll_B_Park_Lotti.B_Parks) =" & bp & "));"
filtro_lotto.RowSourceType = "Table/Query"
filtro_lotto.ColumnCount = 2
filtro_lotto.ColumnWidths = "0in.;1in."
' set Filter
Me.Filter = "[ID_BPark]= " & Val(Me.filtro_bpark)
Me.FilterOn = True
End Sub
Private Sub filtro_lotto_AfterUpdate()
Me.Filter = "[ID_Lotti]= " & Val(Me.filtro_lotto)
Me.FilterOn = True
End Sub
Private Sub filtro_testo_LostFocus()
Me.Filter = "[DESCRIZIONE] LIKE '*" & Me.filtro_testo & "*'"
Me.FilterOn = True
End Sub
Forse così è un pochettino più chiaro…. non entro nel merito del perchè su evento LostFocus e non entro in merito al contenuto della stringa Sql… sembra sia destinata ad un elenco TextBox o Combox… mancherebbe, visto che lo fai da codice, la dichiarazione per le proprietà Colonna Associata….
ma forse sarà meglio parlarne quando il resto del codice è funzionante secondo le tue aspettative.
Ciao