Newsgroup: it.comp.appl.access
Titolo: Filtrare una combobox (casella combinata) come da maschera filtrata

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
 
 


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

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...


 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

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...


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

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...
