Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

creare casella ricerca in una maschera

3,053 views
Skip to first unread message

algio

unread,
Nov 16, 2010, 11:18:22 AM11/16/10
to
Ciao,

scusate, come creo, in una maschera,una casella di ricerca che mi trovi i
valori di uno o pi� campi (scelti da me)?
grazie...
scusate la banalit� della domanda

ciao!

--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it


Antonio Biso

unread,
Nov 16, 2010, 11:11:12 AM11/16/10
to

"algio" <algi...@algio3000.boh> ha scritto nel messaggio
news:ibuaa7$8sa$1...@news.newsland.it...

> Ciao,
>
> scusate, come creo, in una maschera,una casella di ricerca che mi trovi i
> valori di uno o più campi (scelti da me)?
> grazie...
> scusate la banalità della domanda
>
> ciao!

la maschera ha come origine record una query su tabella e criteri where
basati sul valore dei controlli filtro nella maschera

ad ogni aggiornamento dei controlli filtro devi fare un requery della form

Antonio


algio

unread,
Nov 16, 2010, 11:30:39 AM11/16/10
to
Antonio Biso ha scritto:


> la maschera ha come origine record una query su tabella e criteri where
> basati sul valore dei controlli filtro nella maschera

> ad ogni aggiornamento dei controlli filtro devi fare un requery della form

> Antonio

eh? non posso mettere un po di codice in una campo testo?

Karl Donaubauer

unread,
Nov 16, 2010, 11:24:17 AM11/16/10
to
algio wrote:
> scusate, come creo, in una maschera,una casella di ricerca che mi
> trovi i valori di uno o più campi (scelti da me)?
> ...

Non è chiaro cosa intendi con "scelti da me". Quando, dove...
In principio ci sono tanti metodi, p.e.

- puoi usare la creazione guidata per una casella combinata
- www.donkarl.com/it?FAQ4.4
- il punto 3.29 nella sezione Forms di http://www.sitocomune.com


--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it

Antonio Biso

unread,
Nov 16, 2010, 12:11:47 PM11/16/10
to

"algio" <al...@algio.alg> ha scritto nel messaggio
news:ibub18$ao5$1...@news.newsland.it...

> Antonio Biso ha scritto:
>
>
>> la maschera ha come origine record una query su tabella e criteri where
>> basati sul valore dei controlli filtro nella maschera
>
>> ad ogni aggiornamento dei controlli filtro devi fare un requery della
>> form
>
>> Antonio
>
> eh? non posso mettere un po di codice in una campo testo?
>

veramente in un campo testo il codice non ci sta per niente bene

magari del pepe, della maggiorana
la morte sua poi sarebbe salvia, dopo averlo spruzzato con abbondante burro
fuso

ma il codice proprio no, non ce lo mettere ti prego...

ah, mi raccomando, vino rigorosamente rosso, non troppo tanninico!

Antonio


algio

unread,
Nov 16, 2010, 12:33:25 PM11/16/10
to
Karl Donaubauer ha scritto:

> algio wrote:
> > scusate, come creo, in una maschera,una casella di ricerca che mi
> > trovi i valori di uno o più campi (scelti da me)?
> > ...

> Non è chiaro cosa intendi con "scelti da me". Quando, dove...
> In principio ci sono tanti metodi, p.e.

> - puoi usare la creazione guidata per una casella combinata
> - www.donkarl.com/it?FAQ4.4
> - il punto 3.29 nella sezione Forms di http://www.sitocomune.com


Provo a spiegarmi meglio.
campo1, campo2; campo3; campo4

_________________
|_Pippo__________|

quello che vorrei creare è una semplice box testo in cui vado a scrivere
"pippo" e mi farà vedere sulla maschera non tutti i record (1 alla volta)
ma solo quelli che contengono nei campi 1 e 2 il valore pippo.
non si tratta di una tendina per selezionare i valori ma una casella per
cercare i record che hanno quei valori già inseriti.

incollo di seguito quello che avevo scritto per openoffice/base

Sub COFcliente_cerca(oEv)
oModel = oEv.Source.Model
sTestoPerRicerca = oEv.Source.getAccessibleContext.Text
oForm = oModel.Parent
oForm.Filter = " ( LCASE(""Tabella completa"".""Cliente"") LIKE LCASE('%"
& sTestoPerRicerca & "%' ))"
oForm.reload()
End Sub

questa macro è associata alla casella di testo. e funzionare funziona

Karl Donaubauer

unread,
Nov 16, 2010, 1:21:47 PM11/16/10
to
algio wrote:
> ...

> Provo a spiegarmi meglio.
> campo1, campo2; campo3; campo4
> _________________
> |_Pippo__________|
>
> quello che vorrei creare è una semplice box testo in cui vado a
> scrivere "pippo" e mi farà vedere sulla maschera non tutti i record
> (1 alla volta) ma solo quelli che contengono nei campi 1 e 2 il
> valore pippo.
> non si tratta di una tendina per selezionare i valori ma una casella
> per cercare i record che hanno quei valori già inseriti.
>
> incollo di seguito quello che avevo scritto per openoffice/base
>
> Sub COFcliente_cerca(oEv)
> oModel = oEv.Source.Model
> sTestoPerRicerca = oEv.Source.getAccessibleContext.Text
> oForm = oModel.Parent
> oForm.Filter = " ( LCASE(""Tabella completa"".""Cliente"") LIKE
> LCASE('%" & sTestoPerRicerca & "%' ))"
> oForm.reload()
> End Sub
>
> questa macro è associata alla casella di testo. e funzionare funziona

Sembra di essere un codice non per cercare ma per filtrare.
Diciamo che la tua casella di testo per inserire "Pippo" si chiama
"txtFiltro".
Poi in una maschera di Access puoi provare questo codice nell'evento
"dopo aggiornamento" della txtFiltro:

Me.Filter = "[Campo1] Like " & Chr$(34) & Me!txtFiltro & "*" & Chr$(34)
Me.FilterOn = True

o per due campi del tipo testo:

Me.Filter = "[Campo1] Like " & Chr$(34) & Me!txtFiltro & "*" & Chr$(34) & _
" And [Campo2] Like " & Chr$(34) & Me!txtFiltro & "*" & Chr$(34)
Me.FilterOn = True

Il Chr$(34) è solo una cautela se nei campi ci possono essere apostrofi.
Altrimenti basta:

Me.Filter = "[Campo1] Like '" & Me!txtFiltro & "*'" & _
" And [Campo2] Like '" & Me!txtFiltro & "*'"
Me.FilterOn = True

Ho usato l'operatore "And" perché hai scritto:


> che contengono nei campi 1 e 2 il valore pippo

Se invece intendi "nei campi 1 o 2" sostituisci "And" con "Or".

Karl Donaubauer

unread,
Nov 16, 2010, 1:26:31 PM11/16/10
to

Oops, vedo solo adesso che hai usato % prima e dopo la parola -->

Me.Filter = "[Campo1] Like " & Chr$(34) & "*" & Me!txtFiltro & "*" &
Chr$(34)
o
Me.Filter = "[Campo1] Like '*" & Me!txtFiltro & "*'" & _
" And [Campo2] Like '*" & Me!txtFiltro & "*'"

ecc.


algio

unread,
Nov 16, 2010, 5:36:10 PM11/16/10
to
Karl Donaubauer ha scritto:

> ecc.

che differenza c'è tra filtrare e cercare?
domani provo... speriamo!

Karl Donaubauer

unread,
Nov 16, 2010, 5:37:48 PM11/16/10
to
algio wrote:
> ...
> che differenza c'� tra filtrare e cercare?
> ...

Leggi i paragrafi su "Ricerca" e "Filtro" di quest'articolo:
http://office.microsoft.com/it-it/access-help/trovare-i-record-HA010115326.aspx

algio

unread,
Nov 17, 2010, 3:10:14 AM11/17/10
to
Karl Donaubauer ha scritto:

> ecc.


Ciao, ho provato ma non funziona... devo scrivere semplicemente nella riga
che c'è a fianco di "dopo aggiornamento"? o devo creare una macro? se si
come?
grazie

Karl Donaubauer

unread,
Nov 17, 2010, 9:12:49 AM11/17/10
to
algio wrote:
> Karl Donaubauer ha scritto:
>>>> ...

>>> Poi in una maschera di Access puoi provare questo codice nell'evento
>>> "dopo aggiornamento" della txtFiltro:
> ...

>> Me.Filter = "[Campo1] Like " & Chr$(34) & "*" & Me!txtFiltro & "*" &
>> Chr$(34)
>> o
>> Me.Filter = "[Campo1] Like '*" & Me!txtFiltro & "*'" & _
>> " And [Campo2] Like '*" & Me!txtFiltro & "*'"
> ...

> Ciao, ho provato ma non funziona... devo scrivere semplicemente nella
> riga che c'è a fianco di "dopo aggiornamento"? o devo creare una
> macro? se si come?

Non si tratta di un macro ma di codice VBA. Il procedimento:

- posiziona il cursore nella riga della proprietà "Dopo aggiornamento"
della casella di testo
- questa riga infatti è una casella combinata, dal suo elenco scegli
[Routine evento]
- fai clic sul piccolo bottono con i tre punti a destra della riga
che apre l'editore VBA
- nell'editore alla posizione del cursore inserisci il codice
- salva e chiudi l'editore VBA

algio

unread,
Nov 17, 2010, 3:59:14 PM11/17/10
to
Karl Donaubauer ha scritto:

Domani provo: se funzionerò ti nominerò mio guru personale...

algio

unread,
Nov 19, 2010, 7:14:18 AM11/19/10
to
algio ha scritto:

> Domani provo: se funzionerò ti nominerò mio guru personale...

ciao ho provato ma non funziona...
semplicemente quando premo invio mi passa al record successivo ignorando
il filtro e senza dare errori...
(l'unica cosa strana è che nella versione per il filtro su due campi hai
inserito un "_" che mi viene riconosciuto come carattere non valido...)

tra l'altro questa ricerca mi trova solo "Pippo" o anche "pippo" "pip" e
"ppo"?

grazie

ciao

Karl Donaubauer

unread,
Nov 19, 2010, 7:18:26 AM11/19/10
to
algio wrote:
> ...
> ciao ho provato ma non funziona...
> semplicemente quando premo invio mi passa al record successivo
> ignorando il filtro e senza dare errori...
> (l'unica cosa strana è che nella versione per il filtro su due campi
> hai inserito un "_" che mi viene riconosciuto come carattere non
> valido...)

Di solito succede se si perde lo spazio prima del " _".
Uno spazio seguito del trattino basso è un'interruzione di riga
cioè segnala a VBA che il codice continua nella prossima riga.

Incolla tutto il codice che hai provato incluse le righe di dicchiarazione
dell'evento ecc. Forse si vede il problema.

> tra l'altro questa ricerca mi trova solo "Pippo" o anche "pippo"
> "pip" e "ppo"?

Quale ricerca? Se vuoi sapere da me cosa ti troverà devi
prima dire cosa scrivi come parola di ricerca. :-)

algio

unread,
Nov 19, 2010, 8:14:24 AM11/19/10
to
Karl Donaubauer ha scritto:


> > tra l'altro questa ricerca mi trova solo "Pippo" o anche "pippo"
> > "pip" e "ppo"?

> Quale ricerca? Se vuoi sapere da me cosa ti troverà devi
> prima dire cosa scrivi come parola di ricerca. :-)


Private Sub txtFiltro_AfterUpdate()
Me.Filter = "[descrizione_articolo] Like " & Chr$(34) & "*" & Me!txtFiltro
& "*" & Chr$(34)
End Sub

la casella di filtro si chiama txtFiltro
supponiamo di avere un record che abbia il valore Pippo in descrizione
articolo, questa routine(?) mi troverà anche "pippo", "pip" o "ippo"?

al momento banalmente mi ignora!

mi sa che non sono all'altezza... userò il banale pulsante di ricerca o i
comandi presenti nei menù...
per ripristinare la situazione devo andare nel VBA e eliminare la riga che
ho aggiunto?

grazie lo stesso!!!!!!!

Karl Donaubauer

unread,
Nov 19, 2010, 10:59:56 AM11/19/10
to
algio wrote:
> ...

> Private Sub txtFiltro_AfterUpdate()
> Me.Filter = "[descrizione_articolo] Like " & Chr$(34) & "*" &
> Me!txtFiltro & "*" & Chr$(34)
> End Sub
>
> la casella di filtro si chiama txtFiltro
> supponiamo di avere un record che abbia il valore Pippo in descrizione
> articolo, questa routine(?) mi trover� anche "pippo", "pip" o "ippo"?

Hmm, ripeti la tua domanda di prima e continuo a non capirti.
Secondo me la situazione e domanda dovrebb'essere inversa.
Per� puo essere un mio problema di lingua.
Forse qualcun altro ti capisce e interviene.

> al momento banalmente mi ignora!
>

> mi sa che non sono all'altezza... user� il banale pulsante di ricerca
> o i comandi presenti nei men�...


> per ripristinare la situazione devo andare nel VBA e eliminare la
> riga che ho aggiunto?

S�, se elimini tutte le righe che hai aggiunte � successo quasi niente. ;-)

algio

unread,
Nov 19, 2010, 12:25:44 PM11/19/10
to
Karl Donaubauer ha scritto:

> algio wrote:
> > ...


>> Hmm, ripeti la tua domanda di prima e continuo a non capirti.
> Secondo me la situazione e domanda dovrebb'essere inversa.

> Però puo essere un mio problema di lingua.


> Forse qualcun altro ti capisce e interviene.

>

Sì, se elimini tutte le righe che hai aggiunte è successo quasi niente. ;-)

provo a riformulare... fingiamo di avere un filtro funzionante e una
maschera che ha 3 record nel campo "nome"

Pippo
Samantha
Giuseppe

io scrivo nella casella filtro di cui sopra parte di uno dei 3 record
supponiamo "Sam". Il filtro mi restituisce Samantha?
idem per parte terminale (supponiamo "seppe") e/o ignora le
maiuscole/minuscole?

non sei tu che non capisci, sono io che non mi so spiegare.... sono da
formattare

Karl Donaubauer

unread,
Nov 19, 2010, 12:27:32 PM11/19/10
to
algio wrote:
> ...

> provo a riformulare... fingiamo di avere un filtro funzionante e una
> maschera che ha 3 record nel campo "nome"
>
> Pippo
> Samantha
> Giuseppe
>
> io scrivo nella casella filtro di cui sopra parte di uno dei 3 record
> supponiamo "Sam". Il filtro mi restituisce Samantha?

Sě.

> idem per parte terminale (supponiamo "seppe") e/o ignora le
> maiuscole/minuscole?

Sě.

Adesso, riguardando il tuo

> Private Sub txtFiltro_AfterUpdate()
> Me.Filter = "[descrizione_articolo] Like " & Chr$(34) & "*" &
> Me!txtFiltro & "*" & Chr$(34)
> End Sub

vedo perché non succede niente.
Non hai scritto la seconda riga per attivare il filtro, cioč:

Private Sub txtFiltro_AfterUpdate()

Me.Filter = "[descrizione_articolo] Like " & _


Chr$(34) & "*" & Me!txtFiltro & "*" & Chr$(34)

Me.FilterOn = True

End Sub

algio

unread,
Nov 22, 2010, 10:57:27 AM11/22/10
to
Karl Donaubauer ha scritto:

> Sě.

> Sě.

> Adesso, riguardando il tuo

> Private Sub txtFiltro_AfterUpdate()

> Me.FilterOn = True

> End Sub


Visto che "mi sono stato spiegato"?
domani provo... oggi... poi ti dirň...

0 new messages