Newsgroup: it.comp.appl.access
Titolo: filtrare 2 sottomaschere

Speriamo di essere chiaro.....
Premetto che non sono un fenomeno di codice,quindi cerco sempre di farne a
meno,ma ora proprio non ci riesco.
Ho una maschera classica di inserimento per una fattura, con collegata una
"sottomaschera1"di dettaglio fattura.
E fin qui tutto ok.
Ho poi inserito un'altra "sottomaschera2", nella quale visualizzo un elenco
di quello che il cliente ha già comprato in passato.
Ora volevo fare in modo di filtrare questa sottomaschera in base al
cod_prodotto presente nella "sottomaschera1".
Vediamo di essere più chiaro:
vorrei che inserendo il cod_prodotto xxyyzz nella sottomaschera1, la
sottomaschera2 mi visualizzasse solo l'elenco di xxyyzz
(farei questo per controllare eventuali variazioni di prezzo nel tempo allo
stesso cliente)
Ditemi che son stato chiaro.....
Grazie
Fabio

 ha scritto nel messaggio
news:dnPNd.846146$35.32...@news4.tin.it...

L'ideale sarebbe definire "sottomaschera2" come sottomaschera di
"sottomaschera1", ma Access prevede l'uso delle sottosottomaschere, ma non
prevede che a contenere una sottosottomaschera sia una sottomaschera con
visualizzazione a maschere continue.
Forse la cosa migliore sarebbe quella di sostituire "sottomaschera2" con una
casella di riepilogo che abbia come origine riga una query parametrica
filtrata appunto dal codice cliente relativo alla fattura corrente e dal
codice prodotto del record corrente della "sottomaschera1".
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel messaggio
news:dnPNd.846146$35.32...@news4.tin.it...

Il database di esempio Northwind dovrebbe fare al caso tuo.
Guardati le maschere dove vengono visualizzate le vendite per ogni
venditore.
Una sottomaschera visualizza le vendite annuali e un'altra sottomaschera
visualizza i dettagli delle vendite per il trimestre selezionato nella prima
sottomaschera.
kaloma

 kaloma
Sě, grazie, mi ha dato un ottimo spunto.
Ora perň mi resta un altro problemino.
Nella query che genera la 2° sottomaschera vorrei inserire un filtro in base
al vendite.cod_cliente.
La maschera si chiama mas_vendite quindi il controllo relativo dovrebbe
essere: mas_vendite![vendite.cod_cliente]
Quando lo inserisco nella query diventa cosě
:[Maschere]![mas_vendite]![vendite.cod_cliente], ma access mi restituisce un
errore di
parenti non valide e logicamente la maschera non si apre.........mentre se
nella query inserisco direttamente un codice cliente esatto ......"aaaaa" la
maschera
funziona.
Quindi mi pare di capire sia solo un errore di sintassi nell'indicare il
controllo.
Grazie!!!

 ha scritto nel messaggio
news:rD9Od.515585$b5.24...@news3.tin.it...

Devi scrivere tutto il percorso gerarchico.
Forms!TuaMaschera!TuaSottomaschera.Form!NomeControllo
Ciao
Kaloma


Il mio controllo č vendite.cod_cliete e la maschera č mas_vendite.......io
lo scrivo cosě   Maschere![mas_vendite]![vendite.cod_cliente] e
access me lo trasforma
cosě.....[Maschere]![mas_vendite]![vendite.cod_cliente]
e poi mi dice "parente non valide nel nome
[Maschere]![mas_vendite]![vendite.cod_cliente]....
Dove sbaglio??

 ha scritto nel messaggio
news:ZrjOd.854864$35.32...@news4.tin.it...

O non ho capito bene io oppure sei tu che fai un po' di confusione.
Nel post originale dicevi che hai una maschera principale (č questa che si
chiama mas_vendite, vero?) che contiene una sottomaschera (Sottomaschera1)
che contiene il dettaglio fattura.
Nella stessa maschera principale vuoi mettere una seconda sottomaschera
(Sottomaschera2 che non č una sottosottomaschera di Sottomaschera1, ma una
sottomaschera di mas_vendite) che sia filtrata attraverso il codice cliente
che risulta da Sottomaschera1. Ho capito giusto?
Se le cose stanno cosě, č giusta la prima indicazione che t'ho dato
rimandandoti al db d'esempio Northwind che, perň (vado a memoria), tiene il
collegamento fra due sottomaschere con una textbox non visibile.
Nel tuo caso devi scrivere nei criteri della query (nel campo ID cliente)
che sta alla base di Sottomaschera2:
[Maschere]![mas_vendite]![Sottomaschera1].Form![vendite.cod_cliente]
Devi scrivere l'esatta sintassi (ovviamente con il nome giusto della
Sottomaschera1) cosě come l'ho scritta io.
L'uso delle parentesi quadre, a quanto ne so, sono indispensabili quando i
nomi contengono degli spazi (ma č sempre meglio usarle... access dixit...!)
Se non funziona in questa maniera, mi sa che l'unica via possibile sia
quella che ti ha suggerito Roberto.
Ciao
Kaloma
P.S. Scusami se mi permetto un ulteriore suggerimento non richiesto. In un
manuale di access 2000, gli autori consigliavano di usare per i nomi dei
controlli, dei suffissi che facessero capire in maniera chiara quali erano
gli oggetti a cui si riferivano i controlli stessi:
p. e.: tbl per le tabelle (tblMia Tabella), frm o sfrm per le maschere
(fmrMiaForm, sfrmMiaSubform), rpt per i report (rptMioReport), ecc.

 [Maschere]![mas_vendite]![Sottomaschera1].Form![vendite.cod_cliente]
Nel suggerimento che mi scrivi tu, fai riferimento alla sottomaschera1 della
quale non ho bisogno.
Scusami ancora se ti rompo, ma sono sulla crisi di nervi!!

 ha scritto nel messaggio
news:VYlOd.856112$35.32...@news4.tin.it...

Allora, l'è dura eh? :-)
Nella query che sottostà a Sottomaschera2 (che è una sottomaschera di
mas_vendite, non una sottosottomaschera di Sottomaschera1, esatto?) devi
inserire nei criteri del campo cliente:
[Maschere]![mas_vendite]![vendite.cod_cliente] SENZA mettere le parentesi
tonde.
Nei criteri del cod_prodotto sempre di Sottomaschera2  e sempre sulla stessa
riga - operatore And - (se questo campo non c'è lo devi creare per avere una
corrispondenza fra Sottomaschera1 e Sottomaschera2) inserisci ESATTAMENTE:
[Maschere]![mas_vendite]![Sottomaschera1].Form![cod_prodotto] se il
cod_prodotto lo prelevi da Sottomaschera1; oppure:
[Maschere]![mas_vendite]![cod_prodotto] se il cod_prodotto è possibile
prelevarlo direttamente da mas_vendite.
A fronte dell'evento Dopo Aggiornamento sia del controllo cod_cliente sia
del controllo cod_prodotto inserisci il seguente codice:
DoCmd.RunCommand acCmdRefresh
questo fa sì che appena hai inserito dei dati nei controlli suddetti, le
sottomaschere si aggiornino.
Ohè, se ti devi suicidare, vedi di non far schizzar sangue sulle pareti e
sul computer :-)
Bye
kaloma