Newsgroup: it.comp.appl.access
Titolo: Valori Combo da altra Combo.

Salve a tutti,
ho il seguente problema:
Ho una maschera dove ho inserito anche due combo, la seconda prende i valori
filtrati della prima.
Sull'evento su Uscita della Combo 1 ho inserito il requery della seconda
Combo (me!secondacombo.requery), nella seconda combo ho inserito nei criteri
della query in corrispondenza del campo della prima query di cui deve
filtrare i dati, la seguente riga:
[forms]![Nome Maschera].[PrimaCombo]
ma non funziona, nel senso che mi fa apparire i valori del primo record e
tutti quelli successivi che sono uguali al primo, se vado a dare invio in un
altro valore, mi spariscono i valori precedenti ed appaiono tutti quelli
uguali a dove ho dato l'invio.
Qualcuno mi sa aiutare ???
Ho A2000 e W2K
Grazie
ThaiChi

 ha scritto nel messaggio
news:ak501q$2lg$1...@fe2.cs.interbusiness.it...

Verifica se la colonna associata della prima combo corrisponde al criterio
della seconda combo.
Ciao, Carlo

 ha scritto nel messaggio
news:ak501q$2lg$1...@fe2.cs.interbusiness.it...

Non ho capito cosa non funziona. Comunque nella seconda combo metti select
distinct
Antonio


Meglio l'evento dopo aggiornamento.
Dovresti specificare meglio cosa vuoi ottenere da quello che hai scritto
sembrerebbe corretto il risultato  che hai ottenuto poichč con l'istruzione:
[forms]![Nome Maschera].[PrimaCombo]
ottieni il valore selezionato nella combo  e non l'elenco dei valori.
Se devi filtrare in base all'elenco dei valori e' un po' piu' complicato nel
senso che devi fare un ciclo per tutti gli elementi della combo tramite un
ciclo for utilizzando il metodo column e poi crearti una query per la
seconda combo che metta in OR tutti gli elementi ciclati.
Saluti, Antonio.

 ThaiChi
Non è per caso che stai operando in una maschera che ha una visualizzazione
a maschere continue??
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Io ho una maschera dove ho tutte le operazioni di prima Nota e la form è a
maschere continue, quello che vorrei ottenere è che quando apro la maschera
vedo tutti i valori precedentemenete inseriti, quindi anche quelli che si
trovano nella seconda combo che come origine controllo ha il campo dove la
combo ha memorizzato il valore e come origine riga la query dove nella
colonna corrispondente al campo ID della prima combo ho inserito
forms!nomeform!primacombo
Quando apro la maschera invece, ho ad esempio la Voce incasso che come
valori che dovrei avere nella seconda ho Ricevute e Fatture, ed altre voce
che nella combo 1 ha ad esempio Acquisto e nella seconda dovrei avere ad
esempio Italia, Estero, ecc.
Adesso, se apro la maschera trovo che tutti i record che hanno la combo 1 a
Incasso, mi visualizzano il valore corretto, tutte le altre hanno la combo2
in bianco, se batto invio sulla combo nella corrispondenza del valore
Acquisto, mi spariscono tutti i valori della seconda combo che prima erano
visualizzati e mi appaiono tutti quelli che hanno il nuovo valore, se clicco
sulla combo mi visualizza i valori filtrati che in quel momento sono
visualizzati.
Spero di essere stato abbastanza chiaro.
ThaiChi
Per Antonio: Ho inserito Distinct nell'Origine riga (quindi SELECT DISTINCT
[E LA QUERY] ma non ottengo nessuna variazione.

Si, sono Maschere Continue.
ThaiChi

Potresti essere piů chiaro Antonio ???
Magari con un esempio se puoi.
Grazie
ThaiChi


Allora è abbastanza normale che Access si comporti come tu dici. Le combo
sono solamente 2 anche se per effetto della visualizzazione a Maschere
continue le vedi moltiplicate per i record visualizzati in quel momento.
Ciò significa anche che c'è solamente una query parametrica che è origine
riga della sola SecondaCombo; da qui ne consegue che nella SecondaCombo
vedrai la descrizione solamente per quei record per i quali il valore della
PrimaCombo è uguale a quello dell'ultima PrimaCombo utilizzata.
Per risolvere il tuo problema occorre che come origine riga della
SecondaCombo devi crearti due, e non una, query.
La prima, che chiamerai Query1, deve essere identica a quella che stai
usando, e quindi avrà nel campo criteri:
[forms]![Nome Maschera]![PrimaCombo]
La seconda chiamala Query2 e dovrà essere uguale a Query1 ma non deve
contenere assolutamente nulla nella riga criteri (ovvero non verrà filtrata
dai valori di PrimaCombo).
Ora, a fronte dell'evento "Su corrente" della maschera genera il seguente
codice VBA:
Me!SecondaCombo.RowSource = "Query2"
Me!SecondaCombo.Requery
A fronte dell'evento "Dopo aggiornamento" di PrimaCombo genera il seguente
codice VBA:
Me!SecondaCombo.RowSource = "Query1"
Me!SecondaCombo.Requery
Infine a fronte dell'evento "Dopo aggiornamento" di SecondaCombo genera il
seguente codice VBA:
Me!SecondaCombo.RowSource = "Query2"
Me!SecondaCombo.Requery
Prova, ora dovrebbe funzionare tutto.


Roberto, mi sono imballato,
c'č la form principale [04 frm PrimaNota] che ha IDPrimaNota
c'č la subform Linkata con la prima per IDPrimaNota [04a subfrm PrimaNota]
le due combo si chiamano:
la prima [cbo tblOperazione]
la seconda [cbo tblSubOperaz]
l'origine della Form Principale ha come origine una query dove sono legati
tutte le tabelle [qryAnagrafico], [qry PrimaNota], [qryTipoMovimento],
[qryTipoOperazione], [qrySubTipoOperazione]
la prima combo prende i dati dalla qryTipoOperazione
la seconda da qrySubTipoOperazione
come origine riga della seconda combo posso mettere solo una query e se non
ho capito male dovrebbe essere la query1, poi su corrente della
sottomaschera metto il codice che richiama la query2 (questo funziona anche
se siamo in presenza di Maschera e Sottomaschera ???)
Ti scrivo questo perchč ho provato ma non sono riuscito a venirne fuori, ti
chiedo scusa ma se puoi essere ancora piů chiaro.
Se non mi sono spiegato bene e non ti crea problema, ti posso mandare il
database.
Ti ringrazio anticipatamente.
ThaiChi

 ThaiChi


Query origine Riga della Maschera Principale:
SELECT [04 tbl PrimaNota].*, [tbl Movimento].TipoMovimento, [tbl
Operazione].TipoOperazione, [tbl SubOperazione].TipoSubOperazione
FROM (([tbl Movimento] RIGHT JOIN [04 tbl PrimaNota] ON [tbl
Movimento].IDMovimento = [04 tbl PrimaNota].IDtblMovimento) LEFT JOIN [tbl
Operazione] ON [04 tbl PrimaNota].IDtblOperazione = [tbl
Operazione].IDOperazione) LEFT JOIN [tbl SubOperazione] ON [04 tbl
PrimaNota].IDtblSubOperaz = [tbl SubOperazione].IDSubOperazione
ORDER BY [04 tbl PrimaNota].DataOperazione, [04 tbl PrimaNota].IDPrimaNota;
Query Origine Riga della Sottomaschera :
SELECT [04a tbl PrimaNota].IDSubPrimaNota, [04a tbl PrimaNota].IDPrimaNota,
[04a tbl PrimaNota].IDtblOperazione, [04a tbl PrimaNota].IDtblSubOperaz,
[04a tbl PrimaNota].DataOperazione, [04a tbl PrimaNota].IDtblAnagrafico,
[04a tbl PrimaNota].DescrizioneOperazione, [04a tbl PrimaNota].Quantita,
[04a tbl PrimaNota].IDtblUM, [04a tbl PrimaNota].PrezzoUnitario, [04a tbl
PrimaNota].ImportoOperazione, [04a tbl PrimaNota].Ivato, [04a tbl
PrimaNota].Fiscale
FROM ([04a tbl PrimaNota] LEFT JOIN [tbl Operazione] ON [04a tbl
PrimaNota].IDtblOperazione = [tbl Operazione].IDOperazione) LEFT JOIN [tbl
SubOperazione] ON [04a tbl PrimaNota].IDtblSubOperaz = [tbl
SubOperazione].IDSubOperazione;
Query1:
SELECT [qry TipoSubOperazione].IDSubOperazione, [qry
TipoSubOperazione].TipoSubOperazione
FROM [qry TipoSubOperazione]
WHERE ((([qry TipoSubOperazione].IDtblOperazione)=[forms]![04a subfrm
PrimaNota]![cbo tblOperazione]));
Query2:
SELECT [qry TipoSubOperazione].IDSubOperazione, [qry
TipoSubOperazione].IDtblOperazione, [qry
TipoSubOperazione].TipoSubOperazione
FROM [qry TipoSubOperazione];
Nome PrimaCombo:
[cbo tblOperazione] sarebbe il NomeElemento
Nome SecondaCombo:
[cbp tblSubOperaz]
Grazie
ThaiChi

 ThaiChi
Sembrerebbe che il problema sia sulla WHERE di Query1; tu l'hai scritta
così:
WHERE ((([qry TipoSubOperazione].IDtblOperazione)=[forms]![04a subfrm
PrimaNota]![cbo tblOperazione]));
Così andrebbe bene se le combo fossero contenute in una maschera prinipale,
ma essendo contenute in una sottomaschera a mio avviso devi scrivere:
WHERE ((([qry
TipoSubOperazione].IDtblOperazione)=[forms]![NomeMaschera]![NomeControlloSot
tomaschera]![cbo tblOperazione]));
Dove NomeMaschera è il nome della maschera principale, mentre
NomeControlloSottomaschera è il nome del controllo sottomaschera di
NomeMaschera che contiene la sottomaschera [04a subfrm PrimaNota].
Normalmente il nome del controllo sottomaschera coincide con il nome della
sottomaschera, ma non si sa mai...
