Newsgroup: it.comp.appl.access
Titolo: Gestione eventi su sottomaschera

Salve a tutti,
Ho una maschera relativa a una tabella contatti e in essa una
sottomaschera(in visualizzazione tabella) relativa alla tabella
fatture/contatto. La seconda è la tabella di congiunzione con la
tabella fatture che è in relazione molti a molti con contatti.
1) Vorrei far si che quando nella sottomaschera immetto un
valore(vengono visualizzati a tendina, quindi nn scrivo..seleziono...è
possibile selezionare solo valori già presenti in tabella fatture)
prendo l'evento e disabilito il pulsante chiudi maschera nella maschera
principale(in questo modo obbligo in caso di modifica a salvare).
il problema è che nn sono ancora riuscito a rilevare la cosa...ho
provato con i withevents a rilevare .oninsert e .ondelete ma nn fa
nulla...
qualcuno sa aiutarmi?
2) vorrei poter anche, una volta modificato/cancellato/inserito un
valore nella sottomaschera fare un undo in modo da tornare alla
versione precedente...sulla maschera nn ho problemi a farlo ma in
sottomaschera nn mi riesce...
qualcuno sa aiutarmi?
Grazie in anticipo

 ha scritto nel messaggio 
news:1169545650.1...@a75g2000cwd.googlegroups.com...
Salve a tutti,
Ho una maschera relativa a una tabella contatti e in essa una
sottomaschera(in visualizzazione tabella) relativa alla tabella
fatture/contatto. La seconda è la tabella di congiunzione con la
tabella fatture che è in relazione molti a molti con contatti.
1) Vorrei far si che quando nella sottomaschera immetto un
valore(vengono visualizzati a tendina, quindi nn scrivo..seleziono...è
possibile selezionare solo valori già presenti in tabella fatture)
prendo l'evento e disabilito il pulsante chiudi maschera nella maschera
principale(in questo modo obbligo in caso di modifica a salvare).
il problema è che nn sono ancora riuscito a rilevare la cosa...ho
provato con i withevents a rilevare .oninsert e .ondelete ma nn fa
nulla...
[risposta]
Cosa vuoi rilevare?
Per filtrare la casella combinata puoi utilizzare l'evento "su clic" o "su 
invio" e indicare, nella sua istruzione SQL (origine controllo), il nome del 
controllo da utilizzare come condizione: es. nomeCampo = 
Forms!nomeForm!nomeControllo.
Per rilevare se c'è stata una modifica dei dati (non ancora salvati) 
gestisci l'evento (della form) "prima di aggiornare" verificando la 
proprietà Dirty:
es.
if Me.Dirty then '<-- true se il record è stato modificato
   ...
else '<-- false in caso contrario
    ...
end if
Vuoi obbligare l'utente a premere il tuo bottone [Chiudi]? Togli dalla form 
i bottoni standard (quello con la [X]).
2) vorrei poter anche, una volta modificato/cancellato/inserito un
valore nella sottomaschera fare un undo in modo da tornare alla
versione precedente...sulla maschera nn ho problemi a farlo ma in
sottomaschera nn mi riesce...
[risposta]
E come fai nella maschera? Se il record è stato scritto in tabella puoi solo 
cancellarlo, quindi non fai un Undo; quello puoi fare solo se il record è 
ancora in Modifica. Quindi qualsiasi "meccanismo" tu abbia adottato lo puoi 
benissimo fare per la sottomaschera...
Grazie in anticipo
[risposta]
Ciao.
-- 
Sergio MAZZA 

Grazie intento per la tua attenzione Sergio,
allora...per la prima domanda io ho la sottomaschera che è mi
visualizza in foglio dati(i valori sono diversi e una visualizzazione
simile mi è molto più di aiuto rispetto a maschere continue), quindi
non ho caselle combinate su cui rilevare azioni...essendo la tabella da
cui viene creata connessa a quella da cui la maschera principale prende
i dati quando seleziono una riga vuota nella sottomaschera mi vengono
elencate le scelte.
E' su questo che nn riesco a rilevare l'azione di aggiunta di dati..
per la seconda questione fare undo nella maschera principale è
semplice...uso un Me.undo (è un po drastico dato che annulla tutte le
modifiche ma al momento mi può andar bene) dato che finchè non premo
Salva i dati non vengono scritti in tabella...ma nel caso della
sottomaschera non riesco a gestire la cosa.
Spero di essermi meglio espresso

 ha scritto nel messaggio 
news:1169557809....@q2g2000cwa.googlegroups.com...
Grazie intento per la tua attenzione Sergio,
allora...per la prima domanda io ho la sottomaschera che è mi
visualizza in foglio dati(i valori sono diversi e una visualizzazione
simile mi è molto più di aiuto rispetto a maschere continue), quindi
non ho caselle combinate su cui rilevare azioni...essendo la tabella da
cui viene creata connessa a quella da cui la maschera principale prende
i dati quando seleziono una riga vuota nella sottomaschera mi vengono
elencate le scelte.
E' su questo che nn riesco a rilevare l'azione di aggiunta di dati..
[risposta]
Quelli non sono dati aggiunti, ma sono il risultato di una relazione tra 
tabelle. Ma non capisco perché dovresti sapere se ci sono record o no.
per la seconda questione fare undo nella maschera principale è
semplice...uso un Me.undo (è un po drastico dato che annulla tutte le
modifiche ma al momento mi può andar bene) dato che finchè non premo
Salva i dati non vengono scritti in tabella...ma nel caso della
sottomaschera non riesco a gestire la cosa.
[risposta]
L'Undo è un metodo che hanno anche altri controlli.
Spero di essermi meglio espresso
[risposta]
Forse; ma manca sempre il perché...
Ciao.
-- 
Sergio MAZZA 

ho bisogno di sapere se vengono aggiunti record perchè voglio far si
che in questo caso sia obbligatorio riempire un campo "Modificatore"
(sarebbe dove si mette il nome di chi modifica i dati) prima di
salvare. Mi serve tener traccia nei vari record di chi fa modifiche e
quando le fa...per le modifche nella maschera principale e quindi nella
tabella Contatti l'ho gestito....il mio problema son le sottomaschere

 ha scritto nel messaggio 
news:1169570568.7...@k78g2000cwa.googlegroups.com...

[risposta]
Il problema non sono le sottomaschere ma il tuo modo di approcciare al... 
problema.
Se vuoi obbligare l'utente ad inserire un valore devi per forza bloccare o 
nascondere tutti gli altri controlli. Solo dopo aver salvato il valore 
inserito, tu sblocchi o rendi visibili gli altri controlli.
Visto che hai una maschera principale ed una sottomaschera, blocchi la 
sottomaschera impostando la proprietà "Bloccato" a sì.
Poi gestendo l'evento della form "dopo aggiornamento", sblocchi la 
sottomaschera: Me!nomeSottomaschera.Enabled = false...
Ciao.
-- 
Sergio MAZZA 

Quindi mi suggerisci di invertire le fasi...ovvero se l'utente vuole
inserire o modificare prima deve "autenticarsi" e solo poi può
agire...in caso contrario può solo consultare i dati....beh....in
effetti è anche logico^_-...
Domattina quando torno sul db provo...grazie Sergio