Impossibile ripristinare modifiche dopo chiusura con tasto X form acDialog

di il
3 risposte

Impossibile ripristinare modifiche dopo chiusura con tasto X form acDialog

Ciao a tutti i membri del forum e... un grazie anticipato a chi contribuirà con il suo intervento!

Mi è sembrato di capire che, come da titolo, la tecnologia Access non permetta di ripristinare le modifiche digitate dall'utente nel caso si desideri intercettare la chiusura di una form acDialog.

In altre parole, pare non sia possibile implementare la seguente sequenza:
1) Chiusura form tramite tasto X
2) Richiesta di conferma della chiusura, per esempio "sei sicuro di voler annullare tutte le modifiche?"
3) Ripristino delle modifiche digitate dall'utente (proprio per non fargli perdere tutto il lavoro), nel caso di risposta negativa

Tramite l'uso di una variabile globale, impostata opportunamente, che governa la chiusura della form e gli eventi
Form_BeforeUpdate()
Form_Error()
Form_Unload()
si riesce a fare tutto fino al secondo punto. Per il terzo punto, purtroppo, la form riproposta all'utente riporta i dati originari, senza le sue modifiche!
Tutto questo perché il messaggio "Impossibile salvare il record in questo momento", scatenato dalla [cancel=true] impostato nella Form_BeforeUpdate(), viene intercettato dalla Form_Error() che può ritornare solo il valore [acDataErrContinue].
Di fatto, se venisse rimossa la gestione dell'errore 2169 e si rispondesse [No] alla richiesta di [Continuare?], si otterrebbe l'effetto desiderato, ma purtroppo sembra non sia possibile "istruire" il Sistema in questo senso!

Scusatemi se sono stato un po' lungo, ma ci tenevo a confrontarmi con i guru di questo forum, prima di cambiare strada... per esempio copiarmi il record prima della [cancel=true] per ripristinarlo nella form, o decidere di non "lavorare" direttamente sui campi della tabella interessata.

Grazie e... buona serata!

3 Risposte

  • Re: Impossibile ripristinare modifiche dopo chiusura con tasto X form acDialog

    Io non ho capito nulla...
    Prima di procedere sgomberiamo la questione che con Access non si possa fare qualche cosa... access come qualsiasi client verso ai dati può operare in diversi modi... il nativo e ovviamente con maschere associate.

    Se sei in maschera associata ed editi hai solo 1 evento che è il before update... se fossi cancel=True non fai il commit ma non perdi la variazione dei dati solo non dai la modifica.
    Perdi la variazione de fai un UNDO.
    Se invece sei in edit, quindi con una transazione aperta e provi a chiudere la maschera, prima viene eseguito il tentativo di chiudere la transazione quindi si genera il BeforeUpdate poi Unload.
    Se cancelli l'update è vuoi chiudere la maschera è ovvio che vengano perse le modifiche in quanto non salvate e stai chiudendo la .maschera...
    Ora verifica la proprietà DIRTY e, nel caso forzala a False... e vedi che succede.

    Tuttavia credimi, ho il sospetto di non aver capito... in questo caso se potessi pubblicare un file di esempio... magari sarebbe meglio.
  • Re: Impossibile ripristinare modifiche dopo chiusura con tasto X form acDialog

    @Alex ha scritto:


    Io non ho capito nulla...
    Buonasera anche a te Alex, e… grazie per il tempo che hai dedicato a questo tuo frettoloso non-contributo!

    Se veramente non hai capito nulla, mi sfugge il motivo per il quale hai risposto relativamente ad uno scenario che non hai compreso!
    Oltretutto, immagino e spero che sia soltanto per velocità di digitazione, con l’uso di consonanti, preposizioni e verbi tutti da interpretare, arricchiti da una punteggiatura veramente creativa… se tu ti lamenti che non hai capito, sappi che chi ti legge ha fatto veramente fatica a mettere “insieme i pezzi” della tua risposta per farne delle frasi di senso compiuto!

    @Alex ha scritto:


    Prima di procedere sgomberiamo la questione che con Access non si possa fare qualche cosa... access come qualsiasi client verso ai dati può operare in diversi modi... il nativo e ovviamente con maschere associate.
    Non ho mai scritto “che con Access non si possa fare qualche cosa”, ho solo chiesto conferma su un mio dubbio da inesperto… Dunque, se dobbiamo “sgomberare la questione”, iniziamo da questi atteggiamenti gratuitamente polemici, che sicuramente non rendono per niente costruttivo l’intervento e la natura del forum!
    A mio avviso, certi comportamenti dovrebbero essere impediti da netiquette, proprio per rendere più fluido e costruttivo tutto il forum… ma questo è un altro discorso.

    @Alex ha scritto:


    Se cancelli l'update è vuoi chiudere la maschera è ovvio che vengano perse le modifiche in quanto non salvate e stai chiudendo la .maschera...
    Descrivendo il terzo punto, che per comodità di tutti riporto integralmente: “3) Ripristino delle modifiche digitate dall'utente (proprio per non fargli perdere tutto il lavoro)…”, risulta fin troppo chiaro che l’obiettivo non è quello di chiudere la maschera, ma proprio l’opposto!
    Sicuramente ti sarà “sfuggito” per il fatto di aver letto troppo velocemente il post, ma sarai d’accordo con me che anche questo aspetto andrebbe regolato da netiquette, ossia pretendere di non essere troppo “frettolosi” nello scrivere e, soprattutto, nel leggere i post degli utenti, proprio per non generare confusione rischiando di snaturare tutto il thread…

    @Alex ha scritto:


    Tuttavia credimi, ho il sospetto di non aver capito...
    Decisamente!

    Se accetti un consiglio, dovresti cercare di essere meno frettoloso, provando a leggere più attentamente, concentrandoti su quello che leggi, e rispettando il tempo impiegato dagli altri che scrivono… che per quanto inesperti, tutto sommato, sono proprio loro che contribuiscono ad arricchire questo forum!
  • Re: Impossibile ripristinare modifiche dopo chiusura con tasto X form acDialog

    Gli errori sono dovuti alla tastiera del cellulare... ciò non toglie il senso dei suggerimenti, che non sono frettolosi, ma chiaramente a non capirli si fa prima fare il saggista.

    Ora... detto tutto questo, credo proprio tu abbia veramente ragione ripensando al discorso, grazie.
Devi accedere o registrarti per scrivere nel forum
3 risposte