Newsgroup: it.comp.appl.access
Titolo: sincronizzare combo in sottomaschere continue

Ciao
Mi ritrovo a dover sincronizzare due combo in una sottomask tipo foglio dati
Problema : inserisco 3 record in sottomask . vado sulla combo1 riga1 e
scelgo un valore e "dopo aggiornamento" faccio requery della combo2.OK
Idem per le restanti righe . A questo punto clicco su combo2 riga 2 e la
lista corrisponde all'ultima selezione di combo1 riga 3 ma all'ultima scelta
. Non so se mi sono spiegato .
Come fare ?
Ho provato su "on click" a portare il focus sulla combo1 di riga e a dare
una requery ma inutilmente .
Qualche idea ?
Grazie Marce

 ha scritto nel messaggio
news:arj0ph$e8j$1...@ftp-news.csita.unige.it...

Posta il codice SQL che hai come origine riga di Combo2.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


L'origine riga di Combo2 è una query :
SELECT Personale.ID_Personale, Personale.Nome, Personale.Cognome,
Personale.TipoPersonale
FROM Personale
WHERE
(((Personale.TipoPersonale)=[forms]![M_DatiCliniciParto].[form]![sm_Presenze
SalaParto]![TipoPersonale]));
Il campo di query associato alla combo2 è ID_Personale ( devo infatti
scegliere una persona della tab in funzione del tipo personale scelto in
Combo1.
Riga origine di Combo1 è una query sui tipi personale elencati in una tab
TipoPers e sull'evento "dopo aggiornamento" eseguo la requery di combo2
Grazie ancora
Marce

 Marce
Se le due combo so chiamano Combo1 e Combo2.
Creati due query la prima chiamala QueryUNO e dalle il seguente codice SQL:
SELECT Personale.ID_Personale, Personale.Nome, Personale.Cognome,
Personale.TipoPersonale
FROM Personale
WHERE (((Personale.TipoPersonale) =
[forms]![M_DatiCliniciParto].[form]![sm_PresenzeSalaParto]![TipoPersonale]))
;
Createne una seconda chiamata QueryDUE che abbia invece il seguente codice
SQL:
SELECT Personale.ID_Personale, Personale.Nome, Personale.Cognome,
Personale.TipoPersonale
FROM Personale;
A fronte dell'evento "Su corrente" della sottomaschera genera il seguente
codice VBA:
Me!Combo2.RowSource = "QueryDUE"
Me!Combo2.Requery
A fronte dell'evento "Dopo aggiornamento" di Combo1 genera il seguente
codice VBA:
Me!Combo2.RowSource = "QueryUNO"
Me!Combo2.Requery
A fronte dell'evento "Dopo aggiornamento" di Combo2 genera il seguente
codice VBA:
Me!Combo2.RowSource = "QueryDUE"
Me!Combo2.Requery
Naturalmente, modificherai il il codice che ti ho dato, sostituendo il nome
Combo2 con il vero nome della tua seconda combo.



OK , funziona tutto .
Ho però elaborato la tua soluzione ridotta che magari potrebbe servire ad
altri :
       SottoMaschera multiriga con due combo (Combo1 e Combo2) in cui
       le righe risultanti in Combo2 dipendono dal valore assunto in Combo1
1     Sull'evento CORRENTE della submask ho inserito
       Me.Combo2.requery
2     Sulla prima combo (combo1) a riga source la query che pesca sulle
categorie
       Su questa combo (combo1) sull'evento prima di aggiornare
       VecchioValore = me.combo1    ' Salvo valore attuale in VecchioValore
' che è
                    ' dichiarato a livello di modulo (dopo la option
compare)
           ' mentre in dopo aggionamento
       Private Sub Combo1_AfterUpdate()
           If Not Me.Combo1 = VecchioValore Then
                  Me.Combo2 = 0 ' Se il valore scelto non è identico a
quello di prima
                                            ' annullo praticamente la scelta
precedente di Combo2
           End If
           Me.Combo2.Requery
       End Sub
Grazie ancora Roby
Marce