Newsgroup: it.comp.appl.access
Titolo: selezione in sottomaschera

Ho una tabella
t_Configurazione con i seguenti campi:
IDConfigurazione: chiave primaria e contatore
IDCliente:Numerico
DataPreventivo: Data
Un'altra tabella è t_DettConfigurazione
IDDettConfigurazione :chiave primaria e contatore
IDFornitore: numerico
IDCategoriaProdotto: numerico
IDProdotto: numerico
DataOrdine: data
NrOdineFornitore: testo (è il numero che il fornitore assegna al mio ordine)
Qtà: numerico
prezzo
Vorrei che nella sottomaschera DettConfigurazione quando seleziono un valore
nella casella combinata IDCategoriaProdotto
nella casella combinataIDProdotto mi comparissero solo gli ID dei prodotti
di quella categoria e non tutto l'elenco.
Ho già fatto la maschera Configurazione e la sottomaschera
dettConfigurazione con le caselle combinate che funzionano a dovere tranne
che per la selezione di cui sopra. Le due tabelle sono in relazione 1 a
molti e così anche la tabella t_prodotti con quella t_categorieprodotti.
Grazie

 ha scritto nel messaggio
news:xx3A6.28187$wG3.1...@news.infostrada.it...

Nella query che è origine riga della casella combinata IDProdotto, aggiungi
un terzo campo: IDCategoriaProdotto; nella riga criteri di questo nuovo
campo scrivi:
[Forms]![DettConfigurazione]![IDCategoriaProdotto]
A fronte dell'evento "Dopo aggiornamento" della casella combinata
IDCategoriaProdotto genera il seguente codice VBA:
Me!IDProdotto.Requery
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:w_4A6.28897$wG3.2...@news.infostrada.it...

La sottomaschera in cui si trovano i controlli di cui ti parlo è in
visualizzazione foglio dati e quando modifico IDCategoriaProdotto di una
riga automaticamente mi cambiano anche gli IDProdotto delle altre righe.
dove sbaglio?

 ha scritto nel messaggio
news:5vhA6.1150$PK3....@news.infostrada.it...

Dalla struttura delle due tabelle che hai postato precedentemente, non
riesco a capire in base a quali campi le tabelle t_Configurazione e
t_DettConfigurazione sono in relazione uno-a-molti fra di loro:
probabilmente ti sei dimenticato di indicare che nella tabella
t_DettConfigurazione c'è anche un campo numerico chiamato IDConfigurazione e
che serve appunto a instaurare la relazione tra le due tabelle. Giusto?
A parte questo dettaglio, tu probabilmente non hai sbagliato altro, ma io
si.
Il primo errore è che non ho tenuto conto che le caselle di testo sono
contenute in una sottomaschera e non in una maschera principale. Il secondo
errore è che non ho tenuto conto che una sottomaschera normalmente ha una
visualizzazione a Maschere continue o a Foglio dati.
Pertanto azzera tutto e ricominciamo da capo.
Ipotizziamo che la maschera principale si chiami Configurazione e che
contenga un controllo sottomaschera che si chiama DettConfigurazione.
Definisciti la sottomaschera con visualizzazione a Maschere continue e non
Foglio dati (in Foglio dati non esiste l'intestazione di maschera).
Nell'intestazione della sottomaschera inserisci una casella di testo NON
visibile e chiamala pippo.
Nella query che è origine riga della casella combinata IDProdotto, aggiungi
un terzo campo: IDCategoriaProdotto; nella riga criteri di questo nuovo
campo scrivi:
Like Nz([Forms]![Configurazione]![DettConfigurazione]![Pippo];"*")
A fronte dell'evento "Dopo aggiornamento" della casella combinata
IDCategoriaProdotto genera il seguente codice VBA:
Private Sub IDCategoriaProdotto_AfterUpdate()
Me!pippo = IDCategoriaProdotto
Me!IDProdotto.Requery
End Sub
A fronte dell'evento "Dopo aggiornamento" della casella combinata IDProdotto
genera il seguente codice VBA:
Private Sub IDProdotto_AfterUpdate()
Me!pippo = Null
Me!IDProdotto.Requery
End Sub
Dopo aver selezionato la categoria del prodotto avrai la sensazione che le
cose non funzionino; seleziona anche il prodotto e vedrai che tutto
funziona.
