Newsgroup: it.comp.appl.access
Titolo: Sincronizzazione combo in maschera continua

Come suggerito reinvio il messaggio con un altro oggetto.
Sto cercando di realizzare una maschera in visualizzazione continua  con
due combo (usate come "origine controllo"): IdDomanda, IdRisposta
IdRisposta ha come origine riga questa query (colonna associata la seconda):
SELECT  Questionario.Domanda, Questionario.IdDomanda,
Questionario.AreaDomanda
FROM Questionario
WHERE (((Questionario.AreaDomanda)="1"));
ed Idrisposta quest'altra (colonna associata la seconda :
SELECT  ValoriRisposte.ValoriAmmessi, ValoriRisposte.IdRisposta,
ValoriRisposte.IdDomanda
FROM ValoriRisposte
WHERE (((ValoriRisposte.IdDomanda)=Forms!Anagrafica![Risposte
Sottomaschera].Form!IdDomanda));
il problema che mi si presenta, è ben commentato sul sito comune  nella
sezione
form per l'esempio
"Sincronizzare in una maschera due o più caselle combinate ASSOCIATE tra
loro in gerarchia"
cioè una visualizzazione falsata dei valori nella combo Idrisposta nella
fase di aggiornamento
o creazione di un nuovo record. I corrispondenti valori presenti nella
tabella risultano invece corretti.
In questa situazione c'è un modo semplice di risolvere la cosa.
Ho già provato ad applicare l'esempio citato con scarsi risultati.
Grazie.

 Grazie.
Per quello che ci hai raccontato tu NON stai usando, come asserisci, quanto
scritto nella FAQ intitolata "Sincronizzare in una maschera due o piů
caselle combinate ASSOCIATE tra loro in gerarchia", ma stai usando la
tecnica descritta nella FAQ intitolata "Sincronizzare in una maschera due o
piů caselle combinate tra loro in gerarchia", che tratta invece la
sincronizzazione di caselle combinate NON ASSOCIATE usando un'origine riga
STATICO per la seconda casella combinata. Come č invece chiaramente
sottolineato nella prima delle due FAQ tu hai l'assoluta necessitŕ di
gestire DINAMICAMENTE l'origine riga della seconda caselle combinata,
modificandola a fronte degli eventi "Su corrente" della maschera , "Dopo
aggiornaento" della prima casella combinata e "Dopo aggiornamento" della
seconda casella combinata: per fare questo occorre che l'origine riga NON
faccia riferimento ad una query registrata, ma sia impostata con il valore
di una stringa SQL costruita dinamicamente. Cosě facendo, come č facilmente
dimostrabile dal database di esempio allegato alla prima FAQ, avrai solo un
momentaneo "blackout" nella seconda casella combinata limitato al breve
lasso di tempo che intercorre tra la selezione fatta sulla prima casella
combinata e la selezione fatta sulla seconda casella combinata.
Insomma ti suggerisco di studiarti meglio l'esempio della FAQ intitolata
"Sincronizzare in una maschera due o piů caselle combinate ASSOCIATE tra
loro in gerarchia" e se c'č qualcosa che non ti č chiaro rifatti vivo.
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------


L'esempio al quale mi riferivo è comunque quello che mi hai suggerito ed
effettivamente lo applicavo male. Ora che tutto funziona rimane
comunque un problema non da poco, che è costituito dal fatto che così
facendo sono obbligato ad utilizzare per le risposte soltranto le voci in 
elenco
visto che non posso impostare su "no" la relativa proprietà.
Tu, ho chiunque altro abbia avuto la cortesia di arriva a leggere fin quà, 
avete
qualche suggerimento in proposito? 

 ha scritto nel messaggio
news:fewRd.40531$QG6.7...@twister2.libero.it...

A fronte dell'evento "Su non in elenco" della seconda casella combinata
creati una routine che inserisca automaticamente un nuovo record nella
tabella su cui si basa l'origine riga della seconda casella combinata: nel
fare questo dovrai tener conto anche del valore della prima casella
combinata.
Se ti serve di vedere un esempio che realizza tale tecnica, vai sul Sito
Comune e nella Sezione Forms leggi la mia FAQ intitolata "Si può aggiungere
un record alla tabella che è origine riga di una casella combinata senza
usare una maschera?".



Grazie, corro a studiarmelo. 

Ho provato l'esempio che mi hai proposto, funziona,
ma non credo che l'applicherò in questo caso. Per motivi che
non sto a spiegare mi verrebbe più utile realizzare la combo
dove oltre a tutte le voci previste ci sia la voce Altro.
All'evento "Dopo Aggioramento" nel caso in cui la combo fosse
stata impostata su altro farei aprire un nuovo form dove poter digitare
la risposta alternativa.
Cosi facendo avrei che nella tabella delle risposte per il record utilizzato
troverei  una situazione del tipo:
IdRecord ---  IdDomanda---- IdRisposta-----Altro
     1                       2                       9         Varie ed 
ventuali
La combo sulla quale intercetterei l'evento e IdRisposta che ha
come origine controllo il campo di nome corrispondente nella tabella,
colonna associata la prima (contenente IdRisposta <tabella domande>)
colonne visualizzate due (IdRisposta, Risposta) larghezza
0 cm; 5cm
Ho gia scritto qualcosa che funziona
Se me.Idrisposta =  9 allora
apri la maschera RispostaAlternativa
altrimenti
esci
la masche è di tipo popup ed è composta da una txtbox con origine c
ontrollo il campo Altro della tabella risposta.
Una cose non mi piace di quello che ho scritto:
cosi facendo dovrei intercettare tutti i valori delle domande che
prevedono la risposta "altro" (che non è associata solo all'Idrisposta=9 ma 
sono
diversi).
C'è quindi modo di riferirsi alla seconda colonna (quella non associata alla 
combo) che
è quella riportante la dicitura altro?
Mi puoi mettere sulla strada giusta per far si che la nuova maschera che
si apre sull'evento esposto sia figlia della principale e sia posizionata 
sul record corretto.
Grazie

 ha scritto nel messaggio
news:7AJRd.40645$lB4.1...@twister1.libero.it...

Onestamente non mi è molto chiaro cosa tu abbia fatto e quindi cosa ti
serva.
Se però il tuo problema è memorizzare il valore della seconda colonna della
casella combinata, inserisci nella maschera principale una casella di testo
non visibile chiamata SecondaColonna ed a fronte dell'evento "Dopo
aggiornamento" della casella combinata genera la seguente riga di codice
VBA:
Me!SecondaColonna = Me!CasellaCombinata.Column(1)
A questo punto puoi usare il valore memorizzato in tale casella di testo per
filtrare, tramite l'argomento condizioneWHERE del metodo OpenForm (vedi
help), la maschera popup.
Spero di aver ben interpretato quello che ti serviva.


 Roberto
Non so se hai interpretato bene, ora lo rileggo con calma e provo
ad applicarlo per vedere che succede. Comunque quello che volevo
fare è semplicemente lasciare la possibilità  di dare risposte non presenti
in elenco senza che queste vengano aggiunte nella tabella delle risposte 
suggerite
che alimenta la combo IdRisposte ma vengano memorizzate nella tabella delle
risposte date dall'utente.
(l'esempio che mi hai suggerito invece aggiunge un record nella tabella che 
alimenta la combo).
Tali risposte devono comunque avere un Id prestabilito visto che devo
realizzare una serie di query che le conteggino, quindi pensavo
che per ogni domanda protrei inserire tra le risposte suggerite la
risposta "altro:" con id definito da me. Nel caso in cui l'utente selezioni
nella combo il valore "altro:", il suo id viene memorizzato
nel campo relativo nella tabella delle  risposte data ma, a questo punto, 
vorrei
che in un altro campo della stessa tabella (tabella delle risposte date) 
venga memorizzata
questa risposta alternativa. Questo lo faccio con un controllo di tipo 
txtbox contenuto
in un altra maschera.
Non posso far comparire questo nuovo controllo nello stesso form per ragioni 
di spazio.
Quindi i problemi sono due, uno è quello che il nuovo form sia figlio di 
quello che
lo genera (fin qui credo di poterci arrivare da me anche se un suggerimento 
per
capire da dove iniziare è comunque gradito)
l'atro è interecettare il momento in cui viene selezionato il valore 
"altro:"
nella combo in modo da far comparire il nuovo form.
La combo ti ricordo che ha due colonne IdRisposta e RispostaSuggerita,
la colonna associata e IdRisposta ed io per l'evento dopo aggiornamento
vorrei scrivere una routine che verifichi se è stato selezionato il valore 
"altro:"
in modo da far comparire il nuovo form.
Non ho problemi ad intercettare l'id di "altro:"  (me.IdRIsposta = )   , ma 
se volessi rilevare
direttamente il valore "altro:" in modo da non dover scrivere qualcosa del
tipo
if me.idRisposta = 2 or idRisposta =3 ecc ecc.
come potrei fare?
grazie 

Semplificando ancora di più la domanda:
E' possibile da codice conoscere il valore del campo di una colonna 
visualizzata
in una combo ma ad essa non associata? 

 in una combo ma ad essa non associata?
Mi rispondo da solo, ho trovato la soluzione qualche post piů giů:
www.donkarl.com/it
 FAQ 4.15

 ha scritto nel messaggio
news:x2ORd.41050$lB4.1...@twister1.libero.it...

Che poi č quello che avevo suggerito io, o sbaglio?


 -- 
Non esattamente, anche se mi hai messo sulla trada giusta per conoscere
il valore dell'ennesima colonna.
Alla fine ho scritto per l'evento After_update
'Colonna degli id(0); Colonna delle Risposte suggerite(1)
'Intercetto la risposta "altro"
If Idrisposta.Column(1) = "altro" Then
'Apro il form per l'inserimento della risposta alternaiva
Dim stDocName As String
    Dim stLinkCriteria As String
    stDocName = "AltroLavoro"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
Else
End If
cosi individuo  direttamente il valore "altro" e non i
dieci Id a cui č associato nella tabella delle risposte suggerite.
Mi resta da fare in modo che la txtbox che ho nella nuova
maschera sia posizionata sullo stesso record  di quella che l'ha
avviata. Ho provato a posizionarmi manualmente su quel recor
ma non memorizza nel campo predisposto l'informazione.
Grazie 

 ha scritto nel messaggio
news:g7%Rd.42257$QG6.7...@twister2.libero.it...

Prima della OpenForm imposta nella variabile stLinkCriteria il filtro con il
quale aprire la maschera AltroLavoro.


 ----------------------------------------------------
Ok, grazie, ho risolto.