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

Filtrare una combobox (casella combinata) come da maschera filtrata

812 views
Skip to first unread message

MarcoGi

unread,
Jun 15, 2013, 11:17:22 AM6/15/13
to
Premetto che utilizzo prevalentemente Office 2010, ma anche Office XP,
ma questo non credo sia rilevante.

Lasciando perdere il database reale, usiamo un db semplificato:
ho realizzato una tabella "TArchivio" con 2 campi: ID e Nomi.
Su questa stessa tabella ho realizzato la corrispondente maschera
(non importa se tabulare o a colonne) "TArchivio".
Su questa ho realizzato una casella combinata ("Trova un record nella
maschera basato...")
per la ricerca di un determinato record.

E ora ecco il problema:
se cerco nella maschera un record tramite il filtro in base a maschera,
desidererei che la casella combinata mi presentasse
gli stessi record richiesti nel filtro:
un esempio: se nel filtro in base a maschera ho richiesto P*
posso vedere Peppe, Pippo, Piero, e Paolo, ma non Ada o Gianni, ovviamente.
Questi stessi nomi li vorrei vedere comparire nella lista della casella
combinata creata,
escludendo quelli non richiesti.

Presumo sia necessario creare un filtro nella struttura SQL alla base della
casella combinata.
Qualcosa come [Forms]! e in qualche modo FILTER... ma qui mi perdo.

Grazie a chiunque possa aiutarmi!

Marco


@Alex

unread,
Jun 15, 2013, 12:13:57 PM6/15/13
to
Premesso che non lo trovo giusto tecnicamente... ma intercetta
l'evento Su Filtro, e leggine la proprietà, quindi applica il medesimo
Filtro al Recordset origine della Combo... quindi riassegnalo...!

P.S. hai pensato ad usare il Recordset di Form... direttamente...?
Su Load della Maschera:
Set Me!NomeCombo.Recordset=Me.Recordset

Quindi su OnFilter:
Set Me!NomeCombo.Recordset=Me.Recordset

@Alex

MarcoGi

unread,
Jun 16, 2013, 3:42:36 AM6/16/13
to
Grazie ma non va! Forse ho commesso un errore
o forse ho capito male le istruzioni; ho provato sia in Access 2010 che XP,
ma non funziona!

Ho l'impressione che ci siano 2 strade percorribili:
o la casella "Criteri" nella query alla base della combobox
("CombCercaNome")
oppure agire nella form tramite VBA.

Qualche altra idea?

Grazie!
Marco
-------------------------------------------------------------------------------------------------------------------
"@Alex" ha scritto nel messaggio
news:18d96af6-9042-46d8...@cq4g2000vbb.googlegroups.com...

@Alex

unread,
Jun 16, 2013, 5:56:29 AM6/16/13
to
On 16 Giu, 09:42, "MarcoGi" <magio...@tin.it> wrote:
> Grazie ma non va! Forse ho commesso un errore
> o forse ho capito male le istruzioni; ho provato sia in Access 2010 che XP,
> ma non funziona!
>
> Ho l'impressione che ci siano 2 strade percorribili:
> o la casella "Criteri" nella query alla base della combobox
> ("CombCercaNome")
> oppure agire nella form tramite VBA.
>
> Qualche altra idea?
>
> Grazie!
> Marco


Marco ... "non va"... è poco, anzi NULLA... se non mostri il codice...
il risultato è che non ti si può aiutare se al primo aiuto ti fermi e
ByPassi senza far capire a noi
l'errore.

Ti assicuro che va... se lo fai bene, ma se vuoi altre idee..., a me
va benissimo.

@Alex

MarcoGi

unread,
Jun 16, 2013, 8:52:48 AM6/16/13
to
OK, hai ragione! Ecco il codice da me utilizzato:
(Errata Corrige: la tabella si chiama Rubrica;
Nella maschera i controlli, oltre a CombCercaNome
si chiamano come i campi di origine: ID e NOME)
-------------------------------------------------------------------------
Private Sub Form_Load()

Set Me!CombCercaNome.Recordset = Me.Recordset

End Sub

--------------------------------------------------------------------------
Private Sub CombCercaNome_AfterUpdate()

' Trova il record corrispondente al controllo
Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[ID] = " & Str(Nz(Me![CombCercaNome], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark

End Sub

--------------------------------------------------------------------------
Private Sub Form_Load()

Set Me!CombCercaNome.Recordset = Me.Recordset

End Sub

--------------------------------------------------------------------------
... e questa è la query, tradotta in SQL:

SELECT Rubrica.ID, Rubrica.Nome
FROM Rubrica
ORDER BY Rubrica.Nome;
--------------------------------------------------------------------------
Spero di non aver trascurato nulla.
ma... ahimè... dov'è che ho sbagliato?
Attendo news e grazie ancora.

Marco
--------------------------------------------------------------------------
"@Alex" ha scritto nel messaggio
news:8d937c47-99fa-4805...@y5g2000vbg.googlegroups.com...

@Alex

unread,
Jun 16, 2013, 12:34:51 PM6/16/13
to
Questo di certo non può essere il codice che dici non funzionare...,
oltre a Filtrare la Form hai omesso la parte "Non Funzionante" per
filtrare la Combo...!
Ti sei dimenticato o vorresti che la scrivessimo noi...?

Aspettiamo...

@Alex

MarcoGi

unread,
Jun 16, 2013, 3:36:11 PM6/16/13
to
Sì, sì hai ragione...
confermo il messaggio precedente,
ma mancava un frammento di codice (il più importante probabilmente):
----------------------------------------------------------
Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)

Set Me!CombCercaNome.Recordset = Me.Recordset

End Sub
----------------------------------------------------------
a parte la dimenticanza... ho capito giusto?
Ho però un dubbio...
questo frammento si applica all'evento FORM_APPLYFILTER o FORM_FILTER, o
entrambi?
Effettivamente ho provato il codice in entrambe le possibilità, anche
alternandole (una attiva e l'altra no,
prima su FILTER, poi su APPLYFILTER, poi su entrambe) ma non riesco ad
ottenere quanto desiderato.

Attendo...

Thanks!

"@Alex" ha scritto nel messaggio
news:085450b5-cf84-4a59...@y5g2000vbg.googlegroups.com...
0 new messages