Newsgroup: it.comp.appl.access
Titolo: chiudere masch senza salv record

Ciao, vorrei sottoporvi un problema.
Ho una maschera di inserimento dati in cui Ho creato (con una macro) un 
pulsante di chiusura maschera . 
Il problema è che  se ho inserito parzialmente i dati (non salvandoli), 
questi vengono salvati ugualmente al momento che chiudo la maschera. Come 
posso ovviare a questo fatto?
Vi ringrazio.
 ------------------
elimina  "Cancella" dal mio indirizzo di posta

 Vi ringrazio.
Prova così:
1) elimona il pulsante di chiusura maschera impostando a No la proprietà
Pulsante chiusura.
2) Dichiarati in un modulo del database una variabile globale di tipo
Booleano chiamata Pippo.
3) Inserisci nella maschera un pulsnte di comando pigiando il quale
chiuderai la maschera.
4) A fronte dell'evento "Su clic" del pulsante di comando di cui al punto
3), genera il seguente codice VBA:
Pippo = True
DoCmd.Close
5) A fronte dell'evento "Su apertura" della maschera genera il seguente
codice VBA:
Pippo = False
6) A fronte dell'evento "Prima di aggiornare" della maschera genera il
seguente codice VBA:
If Pippo = True Then
    If MsgBox("Vuoi salvare il record corrente", _
    vbQuestion + vbYesNo, _
    "Chiusura maschera") = vbNo Then
    Cancel = True
    End If
End If
Dovresti però proteggerti anche dalla possibilità che l'operatore possa
chiusere il database, nel qual caso il record digitato a metà verrebbe
comunque registrato. Per fare questo trovi due FAQ FAQ sul Sito Comune (link
qui sotto), una  che elimina il pulsante di chiusura di Access ed un'altra
che inibisce i tasti Alt+F4; naturalmente metterai un tasto per la chiusura
del database; a fronte dell'evento "Su clic" di tale pulsante, prima di
chiudere Access imposterai a True Pippo.
Se preferisci, comunque sia, puoi chiedere SEMPRE il consenso per registrare
un nuovo record; anche di questo trovi un esempio nel Sito Comune.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:XMEha.62198$7y3.1...@twister1.libero.it...

Oppure salvi tutto il record su un'array e lavori su quello,  e se alla fine
vuoi scaricare tutto sul database lo fai altrimenti esci e non succede
niente.
Questo è il miglior metodo in assoluto.

 ha scritto nel messaggio
news:MPG.18f0022ab...@powernews.iol.it...

Ciao faina
Nell'evento  Unload della maschera annulla le variazioni es...
Private Sub Form_Unload(Cancel As Integer)
        On Local Error Resume Next
        DoCmd.RunCommand acCmdUndo
End Sub
On local error serve quando chiudi la maschera e non ci sono variazioni, in
questo caso acCmdUndo darebbe errore.
Ciao Giorgio.

 qui sotto),
[Cut]
Al che la domanda:
Ma se erano tre le domande frequenti, diventavano FAQ FAQ FAQ??
ciao e buongiorno
MAssimiliano
--------------------------------
Inviato via 
http://usenet.libero.it

 MAssimiliano


 ha scritto nel messaggio
news:nsGha.44434$i26.1...@news2.tin.it...

Rispetto il tuo punto di vista ma non lo condivido assolutamente.


, 
r.ma...@libero.it
 says...

Ti ringrazio per la spiegazione così particolareggiata, ma c'è qualcosa 
che non funziona: quando premo il pulsante la maschera si chiude ma il 
problema si ripresenta. Ho seguito scrupolosamente le tue indicazioni, 
l'unico dubbio che ho riguarda la creazione del modulo con una "variabile 
globale di tipo Booleano" (????) che ho interpretato con "Dim Pippo As 
String", va bene?  inoltre, devo dare al modulo un nome particolare?
Ciao
faina.
-- 


 ha scritto nel messaggio
news:MPG.18f3e391b...@powernews.iol.it...

Per quanto riguarda cosa sia una variabile globale leggi cosa dice l'help.


, 

Scusa se ti rompo ancora, ho dato un occhiata all'help e, se ho capito 
bene, ho inserito nel modulo "Public Pippo As Boolean". Ora il pulsante 
funziona e, se voglio, il record non viene salvato. Purtroppo, però, ho 
notato che nel momento in cui rientro nella maschera e vado ad inserire 
un nuovo record il contatore va al numero successivo. Hai un' idea perchè 
questo non avvenga? Ciao



E' normale che un campo contatore si comporti così e non puoi intervenire in
nessun modo, visto che non si può intervenire sul valore di un campo
contatore; in realtà un intervento da fare ci sarebbe: dopo aver rinunciato
alla registrazione di un nuovo record dovresti compattare il database: per
compattare un database da codice VBA vai sul Sito Comune (link qui sotto):
nella Sezione General ci trovi due o tre FAQ che trattano l'argomento.
D'altra parte le chiavi primarie servono per rendere i record univoci, per
la qual cosa non ha alcuna importanza se nei valori della chiave primaria ci
sono o meno dei buchi.
Prova a valutare l'alternativa di cambiare il tipo dato della chiave
primaria da Contatore a Numerico e di gestirti tu l'incremento.
