Newsgroup: it.comp.appl.access
Titolo: Sottomaschera, requery, casella combinata

In una Sottomaschera (Foglio Dati) ho tre Campi. RIVISTA, FORMATORIVISTA,
PREZZO.
Atteso che non tutte le riviste possiedono gli stessi formatirivista, ho
realizzato su -OrigineRiga- di FORMATORIVISTA una istruzuine SQL(Query) che
quando vado a scegliere il FormatoRivista , dopo aver scelto da casella
combinata rivista la rivista, viene applicato l'istruzione SQL che mi fa
vedere(con l'ausilio di un requery dopo aggiornamento) solo i formatiRivista
relativi alla rivista in oggetto.
Il problema sorge perchè il requery non avviene solo sul campo del record in
oggetto ma anche su tutta la colonna FORMATO RIVISTA. Infatti se al secondo
record nell'elenco della  casella combinata non è presente il formatorivista
scelto nel record precedente, il campo FormatoRivista, del record
precedente, diventa vuoto.  Questo cambiamento avviene solo a livello di
videata perche' in effetti andando a vedere i record scritti le cose sono
OK. Come posso risolvere questo problema "estetico"?
Spero di essere stato chiaro
P.S. sono nei guai, aiutatemi!
Infinitamente grazie
Michele b.

 wrote in message 3b3da...@news.dada.it...

E' un prolema che assilla anche me.....

 ha scritto nel messaggio
news:3b3da...@news.dada.it...

Innanzitutto ti ricordo che nelle maschere ci sono i controlli e non i campi
che sono invece contenuti nelle tabelle e nelle queries.
Quello che ti succede è normale, visto che la sottomaschera ha una
visualizzazione Foglio Dati (stessa cosa sarebbe stato se avese avuto una
visualizzazione a Maschere continue);  anche se visualizzi più righe nella
sottomaschera, la casella combinata FORMATORIVISTA è una, così come il suo
elenco che serve a portare in chiaro la descrizione in tutte le righe.
Per eliminare l'inconveniente da te lamentato, devi cambiare dinamicamente
l'origine riga di FORMATORIVISTA.
Se la maschera principale si chiama Maschera1 ed il controllo sottomaschera
in esso contenuto si chiama Pippo.
Se il codice SQL che è attualmente origine riga della casella combinata Cè
il seguente:
SELECT DISTINCTROW tblRiviste.IDRivista, tblRiviste.FormatoRivista FROM
tblRiviste WHERE
(((tblRiviste.IDRivista)=[Forms]![Maschera1]![Pippo]![RIVISTA]));
Elimina da questa query la proposizione WHERE; il suo codice SQL risulterà
quindi:
SELECT DISTINCTROW tblRiviste.IDRivista, tblRiviste.FormatoRivista FROM
tblRiviste;
A questo punto, a fronte dell'evento "Dopo aggiornamento" del controllo
RIVISTA genera il seguente codice VBA:
Me!FORMATORIVISTA .RowSource = "SELECT DISTINCTROW " & _
"tblRiviste.IDRivista, tblRiviste.FormatoRivista FROM tblRiviste " & _
"WHERE (((tblRiviste.IDRivista)=[Forms]![Maschera1]![Pippo]![RIVISTA]));"
Me!FORMATORIVISTA.Requery
Quindi a fronte dell'evento "Dopo aggiornamento" della casella combinata
FORMATORIVISTA genera il seguente codice VBA:
Me!FORMATORIVISTA .RowSource = "SELECT DISTINCTROW " & _
"tblRiviste.IDRivista, tblRiviste.FormatoRivista FROM tblRiviste;"
Me!FORMATORIVISTA.Requery
Anche a fronte dell'evento "Su corrente" della tua sottomaschera genera il
seguente codice VBA:
Me!FORMATORIVISTA .RowSource = "SELECT DISTINCTROW " & _
"tblRiviste.IDRivista, tblRiviste.FormatoRivista FROM tblRiviste;"
Me!FORMATORIVISTA.Requery
Così facendo, il tuo fastidioso problema "estetico" esisterà solo per il
breve tempo necessario a selezionare il formato dalla casella combinata
FORMATORIVISTA, dopo di che tornerai a visualizzare il formato su tutte le
righe della sottomaschera.
Spero di essere stato chiaro; eventalmente rifatti vivo postando il codice
SQL che hai come origine riga della combo FORMATORIVISTA.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

Ciao Roberto, mi sono incasinato. Ti invio i seguenti codici:
CasellaCombinata CODICERIVISTA
Origineriga:
SELECT [Rivista].[CodiceRivista], [Rivista].[TitoloRivista] FROM Rivista;
Su Evento dopo aggiormamento:
Private Sub CodiceRivista_AfterUpdate()
Me!CodiceFormato.Requery
End Sub
CasellaCombinata CODICEFORMATO:
OrigineRiga:
SELECT [RivistaFormato].[CodiceFormato], [RivistaFormato].[FormatoRivista],
[RivistaParticolari].[CodiceRivista] FROM RivistaFormato INNER JOIN
RivistaParticolari ON
[RivistaFormato].[CodiceFormato]=[RivistaParticolari].[CodiceFormato] GROUP
BY [RivistaFormato].[CodiceFormato], [RivistaFormato].[FormatoRivista],
[RivistaParticolari].[CodiceRivista] HAVING
(((RivistaParticolari.CodiceRivista)=[forms]![commissione]![SMcommissioneSM]
![codiceRivista]));
Angora grazie
Michele b.

 ha scritto nel messaggio
news:3b403...@news.dada.it...

Prova cosě:
A fronte dell'evento "Dopo aggiornamento" della casella combinata
CODICERIVISTA genera il seguente codice VBA:
Private Sub CodiceRivista_AfterUpdate()
Me!CodiceFormato.RowSource = "SELECT [RivistaFormato].[CodiceFormato], " & _
"[RivistaFormato].[FormatoRivista], [RivistaParticolari].[CodiceRivista] " &
_
"FROM RivistaFormato INNER JOIN RivistaParticolari ON " & _
"[RivistaFormato].[CodiceFormato]=[RivistaParticolari].[CodiceFormato] " & _
"GROUP BY [RivistaFormato].[CodiceFormato], " & _
"[RivistaFormato].[FormatoRivista], [RivistaParticolari].[CodiceRivista] " &
_
"HAVING(((RivistaParticolari.CodiceRivista)=" & _
"[forms]![commissione]![SMcommissioneSM]![codiceRivista]));"
Me!CodiceFormato.Requery
End Sub
A fronte dell'evento "Dopo aggiornamento" della casella combinata
CodiceFormato genera il seguente codice VBA:
Private Sub CodiceFormato_AfterUpdate()
Me!CodiceFormato.RowSource = "SELECT [RivistaFormato].[CodiceFormato], " & _
"[RivistaFormato].[FormatoRivista], [RivistaParticolari].[CodiceRivista] " &
_
"FROM RivistaFormato INNER JOIN RivistaParticolari ON " & _
"[RivistaFormato].[CodiceFormato]=[RivistaParticolari].[CodiceFormato] " & _
"GROUP BY [RivistaFormato].[CodiceFormato], " & _
"[RivistaFormato].[FormatoRivista], [RivistaParticolari].[CodiceRivista];"
Me!CodiceFormato.Requery
End Sub
A fronte dell'evento "Su corrente" della sottomaschera genera il seguente
codice VBA:
Private Sub Form_Current()
Me!CodiceFormato.RowSource = "SELECT [RivistaFormato].[CodiceFormato], " & _
"[RivistaFormato].[FormatoRivista], [RivistaParticolari].[CodiceRivista] " &
_
"FROM RivistaFormato INNER JOIN RivistaParticolari ON " & _
"[RivistaFormato].[CodiceFormato]=[RivistaParticolari].[CodiceFormato] " & _
"GROUP BY [RivistaFormato].[CodiceFormato], " & _
"[RivistaFormato].[FormatoRivista], [RivistaParticolari].[CodiceRivista];"
Me!CodiceFormato.Requery
End Sub
Nell'origine riga della casella combinata CodiceFormato scrivi il seguente
codice SQL:
SELECT [RivistaFormato].[CodiceFormato], [RivistaFormato].[FormatoRivista],
[RivistaParticolari].[CodiceRivista] FROM RivistaFormato INNER JOIN
RivistaParticolari ON
[RivistaFormato].[CodiceFormato]=[RivistaParticolari].[CodiceFormato] GROUP
BY [RivistaFormato].[CodiceFormato], [RivistaFormato].[FormatoRivista],
[RivistaParticolari].[CodiceRivista];
Prova e facci sapere.



Perfetto!!!!!!!!
ancora grazie
P.S. un'ultima cosa. In effetti la sottomaschera non finisce cosě, infatti
ci sono altre due caselle combinate che dovranno filtrare dati e sono
FormatoGrafica e FormatoStampa.
Posso continuare ad usare lo stesso codice per queste ultime? Non ho avuto
ancora tempo per andarmi  a studiare quello che mi hai mandato ma se non
sbaglio dovrei mi dovrebbe bastare sostituire il CodiceFormato con ad es.
CodiceGrafica.
Ancora Grazie
Michele b.


Beh, forse č bene che studi meglio la soluzione. ;-)
Dovrai cambiare qualche cosina in piů; perň la logica resta la stessa:
cambiare on the fly l'origine riga delle caselle combinate.


Tutto ok. Ho provato e funziona tutto egregiamente. Anzi c'è un piccolo
problema.
Quando vado a cambiare una opzione da casella combinato mi sballa il tutto.
L'unico rimedio è ripetere la selezione di tutti i valori delle caselle
combinate del record in oggetto. E' un problema risolvibile?
ciao e grazie ancora

 ha scritto nel messaggio
news:3b41d...@news.dada.it...

Non ho capito cosa vuoi dire.


 ha scritto nel messaggio
news:3b3da...@news.dada.it...



Come da te richiesto ti ho inviato un database di esempio che a suo tempo
preparai per testare un problema posto in un altro thread (se non lo avessi
avuto pronto naturalmente non te lo avrei inviato ;-) ).
Non parla di riviste e di formati rivista, ma simula una maschera clienti
che contiene anche una sottomaschera in cui vengono inseriti i prodotti
acquistati da quel cliente.
La sottomaschera, oltre alla quantità, contiene una casella combinata con la
quale si seleziona la categoria del prodotto da acquiatare ed una casella
combinata dalla quale si seleziona il prodotto da acquistare; nell'elenco di
quest'ultima casella combinata compariranno solamente i prodotti della
categoria precedentemente selezionata.
Resta naturalmente inteso che eventualimenti chiarimente su tale database
saranno discussi solamente su questo NG e non in privato.


 ha scritto nel messaggio
news:cNH07.597$D03....@news.infostrada.it...

Ho ricevuto il Db e ringrazio vivamente. Mi hai risolto un problema, per me,
estremamente annoso e difficile.
Grazie mille e scusa per la mia richiesta

 wrote in message ftQH0yRBBHA.308@news...

Potreste inviare anche a me il db? ve ne sarei molto grato.


A quale indirizzo e_mail?


 
andrea...@supereva.it
 Grazie.