Newsgroup: it.comp.appl.access
Titolo: Filtro di ricerca

Ciao a tutti
Ho una maschera: Mia_Maschera
Su questa maschera ho messo:
      -una casella di testo Mia_CaselladiTesto
      -una listbox (i cui dati li preleva da una tabella tb_fornitori)
Quello che vorrei fare è questo:
cominciando a digitare nella casella di testo il NOME di un fornitore, il
record corrispondente nella listbox viene evidenziato come corrente, nella
listbox
Grazie e buon Natale
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
se sostituisci la list con una ComboBox (casella di riepilogo a discesa) 
questo comportamento è automatico.
Però riguarda solo ' L'INIZIO ' del campo e non le eventuali ricorrenze 
all'interno.
Se vuoi trovare 'PINCO' ovunque sia scritto all'interno del campo 
Ragione Sociale dovrai modificare il RowSource (origine Record) della 
list box. Potresti farlo in automatico sull'evento Su cambiamento della 
casella di testo. Ti crei una stringa SQL al volo e aggiorni il 
rowsource della list box. Qualcosa del genere:
Private Sub tCERCA_Change()
     Dim sSQL As String
     sSQL = "SELECT [ragione_sociale] FROM [tAnagrafica] WHERE " & _
             " [ragione_sociale] LIKE '*" & tCERCA.Text & "*'"
     listAnagrafica.RowSource = sSQL
End Sub
naturalmente sostituisci i nomi dei controlli e dei campi con i tuoi.
IvanDaBologna

 IvanDaBologna
***********************************************
***********************************************
***********************************************
Ciao non funziona correttamente nel senso che:
La listbox contiene i seguenti campi:
CodForn | RagioneSociale | Indirizzo| ecc...
l'origine dei record è questa se vado a vedere nelle proprietà:
************************************************************************************************************************************************************************************************************
SELECT tb_fornitori.Codice, tb_fornitori.RagioneSociale,
tb_fornitori.Indirizzo, tb_fornitori.Cap, tb_fornitori.Località,
tb_fornitori.Prov, tb_fornitori.Telefono, tb_fornitori.Fax,
tb_fornitori.Email
FROM tb_fornitori;
************************************************************************************************************************************************************************************************************
ho creato sulla maschera la casella di ricerca TCERCA e nel suo evento
change ho messo quello che tu mi hai detto:
----------------------------------------------------------------------
Private Sub TCERCA_Change()
Dim sSQL As String
sSQL = "SELECT [RagioneSociale] FROM [tb_fornitori] WHERE " & _
" [RagioneSociale] LIKE '*" & TCERCA.Text & "*'"
ElencoForn.RowSource = sSQL
End Sub
----------------------------------------------------------------------
ma quando provo a scrivere scompaiono tutte le colonne tranne la prima che
non contiene più il CodForn ma la RagioneSociale
ma sono spariti tutti gli altri campi 
C'è un errore?


[cut]

chiaramente devi inserire TUTTI i campi della tua query. Io ne ho messo 
uno solo(col nome da adattare) quello su cui si poggia il filtro.
Credo che dovresti scrivere una cosa del genere ( a parte qualche 
errorino di sintassi ...)
************************************************************************************************************************************************************************************************************
sSQL ="SELECT Codice, RagioneSociale, Indirizzo, Cap, Località, " & _ 
"Prov,  Telefono, Fax,  Email " & _
"FROM tb_fornitori  WHERE " & _
" [RagioneSociale] LIKE '*" & TCERCA.Text & "*'"
così le colonne ci sono e cerchi solo su RagioneSociale.
IvanDaBologna