Newsgroup: it.comp.appl.access
Titolo: annullare inserimento!

Ciao a tutti, vorrei una vostra dritta sul seguente problema:
ho una maschera con sottomaschera, nel momento in cui finisco di 
inserire i dati generali contenuti nella maschera passo alla 
sottomaschere, completo qualche campo ma mi accorco che i dati che sto 
scrivendo sono tutti sbagliati, allora voglio annullare l'inserimento e 
clicco su un pulsante creato apposta "annulla", dove alla chiamata su 
click ho associato il comando "undo".
La maschera viene pulita da ogni dato inserito, però mi accorgo andando 
nella tabella relativa alla maschera che il record che avevo iniziato ad 
inserire continua ad esistere come faccio a non farlo registrare per 
niente se clicco su annulla?

 wrote in message
news:k9Gsd.462036$35.20...@news4.tin.it...

Perché vuoi complicarti la vita?
Non fai prima a selezionare sulla scheda principale il record
dal quale dipende quello già in parte compilato nella sottosceheda
e premere "Cancel"?
Bruno

Bruno Campanini ha scritto:

No perchè la maschera e la sottomaschera sono utilizzate per 
l'inserimento dei dati e quando si aprono si aprono solo nella 
"versione" immissione dati

 ha scritto nel messaggio
news:k9Gsd.462036$35.20...@news4.tin.it...

Avendo Form con SubForm non ti sarà facile ottenere quanto chiedi.
Access(JET) non è MultiTransazionale, pertanto puoi eseguire un solo
UPDATE/ADDNEW e di conseguenza ROLLBACK per transazione.
Questo limita la possibilità di utilizzare transazioni Nidificate come
occorrerebbe gestire nel tuo caso.
Ora sul SitoComune trovi un esempio dell'utilizzo Transazionale
che potrebbe instradarti sulla tecnica da usare.
SEZIONE [FORMS]
    [ARTICOLO di Luca Dall'Olio]
        Annullare le modifiche apportate ai dati in una form con subform
L'ultimo problema che ti rimarrà sarà quello di ELIMINARE il Record nella
Form e per questo non dovresti avere problemi.
La soluzione più complessa e forse più performante è quella di usare
Form non associate, ma devi gestirti tutto via Codice e se non hai le
idee chiare rischi di scrivere pagine di CODICE.
Ciao-
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------

 ha scritto nel messaggio 
news:k9Gsd.462036$35.20...@news4.tin.it...

Se hai impostato le relazioni con integrità referenziale ed "Elimina redcord 
correlati a catena", l'eliminazione del record dalla maschera principale, 
avrà l'effetto di eliminare anche i record nella sottomaschera.
Il tutto può anche essere gestito da una query di eliminazione che abbia nei 
criteri l'ID del record corrente della maschera. Lo stesso dicasi per i 
record della sottomaschera se non sono in relazione con la maschera 
principale o se, pur essendo in relazione con la principale, vuoi eliminarne 
i record.
In entrambi i casi, dopo l'eliminazione, farai un bel requery della 
maschera.
Questa è solo una delle possibili strade.
Ciao, Carlo 

 ha scritto nel messaggio
news:k9Gsd.462036$35.20...@news4.tin.it...

Ciao Maurizio,
ti invio alcune righe di codice con cui ho risolto un problema analogo al
tuo.
I puntini sospensivi stanno ad indicare varie IF di controllo che per
brevità non ho inserito perchè non sono importanti.
Private Sub Comando44_Click()
On Error GoTo Err_Comando44_Click
   Dim Cancel As String
   Dim retValue As Integer
   Dim strTtl As String
   Dim strMsg As String
   strTtl = "Conferma SALVATAGGIO"
   strMsg = "Vuoi salvare i dati?" & vbCrLf
   retValue = MsgBox(strMsg, vbQuestion + vbYesNo, strTtl)
   Select Case retValue
       Case vbYes
       Me.Refresh
.................
.................
..................
 Case vbNo
           Me.Undo
           DoCmd.SetWarnings False
           DoCmd.OpenQuery "EliminaRecordSottomascheraNonRichiesto"
           DoCmd.OpenQuery "EliminaRecordFormNonRichiesto"
           DoCmd.OpenQuery "EliminaRecordFormNonRichiesto"
           DoCmd.SetWarnings True
           Me.Requery
           DoCmd.GoToRecord , , acNewRec
In pratica ho creato delle query di eliminazione per i dati della Form e
subForm.
Ciao
Rita