Impedire andare record succesivo o precedente

di il
18 risposte

Impedire andare record succesivo o precedente

Nell'evento BeforeUpdate della maschera ho la funzione salva.

Prima di salvare ho un msgbox in cui chiedo conferma tre pulsanti (si, no, annulla)

quando è SI salva recolare senza problemi
quando è NO elimina le modifiche senza problemi

il problema è su ANNULLA che dovrebbe rimanere sul record corrente della maschera e funziona in parte.
Se l'utente tenda di andare ad un altro record (primo, successico ecc.) cambia record e ciò non va bene

18 Risposte

  • Re: Impedire andare record succesivo o precedente

    Spoega meglio… perche se hai più records è normale possa spostarsi… in ogni caso completa i dettagli e posta il codice..

  • Re: Impedire andare record succesivo o precedente

    Variabile MyRecordId

    Se annulla 

    Annulli e ti riposizioni su MyRecordId

    Succede quando usi la stessa maschera e la stessa tabella.

  • Re: Impedire andare record succesivo o precedente

    23/06/2023 - lucavalentino ha scritto:


    Nell'evento BeforeUpdate della maschera ho la funzione salva.

    Prima di salvare ho un msgbox in cui chiedo conferma tre pulsanti (si, no, annulla)

    quando è SI salva recolare senza problemi
    quando è NO elimina le modifiche senza problemi

    il problema è su ANNULLA che dovrebbe rimanere sul record corrente della maschera e funziona in parte.
    Se l'utente tenda di andare ad un altro record (primo, successico ecc.) cambia record e ciò non va bene

    Ciao 

    sicuro che hai problema solo sul pulsante Annulla

    Per come hai esposto il quesito mi sa che anche prima dell'evento BeforeUpdate si potrebbe spostare nei record precedenti o successivi

    Pertanto sarebbe necessario capire come blocchi il record corrente 

  • Re: Impedire andare record succesivo o precedente

    23/06/2023 - lucavalentino ha scritto:


    Nell'evento BeforeUpdate della maschera ho la funzione salva.

    Prima di salvare ho un msgbox in cui chiedo conferma tre pulsanti (si, no, annulla)

    quando è SI salva recolare senza problemi
    quando è NO elimina le modifiche senza problemi

    il problema è su ANNULLA che dovrebbe rimanere sul record corrente della maschera e funziona in parte.
    Se l'utente tenda di andare ad un altro record (primo, successico ecc.) cambia record e ciò non va bene

    Comunque potresti spiegarmi il senso di “annulla”?

    O confermi o non confermi.

    Mi presti 10 euro? Si no annulla…

    Vuoi confermare? Si no

  • Re: Impedire andare record succesivo o precedente

    Se l'utente tenda di andare ad un altro record (primo, successico ecc.) cambia record e ciò non va bene

    Pericoloso!

    Ma non usi un form dedicato alla modifica e/o inserimento?

    Ma anche una pagina dello stesso form dove non vedi la tabella ma solo il record corrente…

    Immagina se stai inserendo 30 campi… si sposta il focus ad un altro record e… salvare? Si no annulla… ecco, ora annulla ha un senso.

  • Re: Impedire andare record succesivo o precedente

    23/06/2023 - sihsandrea ha scritto:


    Se l'utente tenda di andare ad un altro record (primo, successico ecc.) cambia record e ciò non va bene

    Pericoloso!

    Ma non usi un form dedicato alla modifica e/o inserimento?

    Ma anche una pagina dello stesso form dove non vedi la tabella ma solo il record corrente…

    Immagina se stai inserendo 30 campi… si sposta il focus ad un altro record e… salvare? Si no annulla… ecco, ora annulla ha un senso.

    Ciao, in effetti sono poche le informazioni che ha dato … concordo con Annulla che non ha senso…
    Sono diversi i metodi per bloccare il record corrente, sia in fase di insert new record che in update. E' interessante se non fondamentale, capire se e come ha bloccato il record corrente per dare una corretta soluzione. 

    Il fatto stesso che perda il record corrente se sceglie Annulla… fa pensare e non poco, ad una non corretta gestione…. ma siamo sempre alle solite, bisogna sempre tirar fuori la sfera di cristallo ;))

  • Re: Impedire andare record succesivo o precedente

    Che poi il codice inserito in beforeupdate ha solo senso se si fanno chiamate esterne e referenze di altre tabelle. Se pigi il pulsantino “conferma” cosa esegue? Post e basta? Due eventi per fare la stessa cosa?

    Crea una form modale di edit. Troverai solo i campi interessati editabili (sulla viewform saranno in readonly) senza poter andare a zonzo per la tabella.

    In questo caso avrai due pulsanti ok e annulla con tanto di richiesta di conferma. Magari imposti il modalresult a ok su ok e cancel su annulla… 

    Si, mi torna in mente il gran mogol di gioventù quando mi chiese se sapevo programmare. Dopo tre volte che risposi “si conosco il linguaggio xy” mi chese se conoscevo l'italiano. Quando risposi di si mi chese quanti romanzi avessi scritto… programmare significa pianificare quello che deve fare un programma. Valutare quali strumenti utilizzare e come prevenire eventuali comportamenti dell'utilizzatore. Magari hai un campo data e l'utente scrive oggi… devi prevedere anche l'assurdo. Prevedere che l'utente carica 10 volte un cliente con la stessa partita iva ecc… ma tu hai problemi già in fase di edit.

    Usa una form per ogni cosa o in alternativa una form con più pagine (o come si chiamano nel giocattolo access).

  • Re: Impedire andare record succesivo o precedente

    23/06/2023 - sihsandrea ha scritto:

    Usa una form per ogni cosa o in alternativa una form con più pagine (o come si chiamano nel giocattolo access).

    Ci sono anche sezioni del forum con argomenti sicuramente molto più tecnici nei quali si può esprimere al meglio la propria esperienza su cose serie… effettivamente mi chiedo a che pro perdere tempo con i giocattoli… ;-)

    Dal momento che il forum, questa sezione, è per chiusa access magari lascierei perdere queste  frasi fatte ripetute a mantra, io proverei a rispondere in modo concreto e circostanziato potrebbe sembrare più simpatico…

    Saluti

  • Re: Impedire andare record succesivo o precedente

    24/06/2023 - @Alex ha scritto:


    23/06/2023 - sihsandrea ha scritto:

    Usa una form per ogni cosa o in alternativa una form con più pagine (o come si chiamano nel giocattolo access).

    Ci sono anche sezioni del forum con argomenti sicuramente molto più tecnici nei quali si può esprimere al meglio la propria esperienza su cose serie… effettivamente mi chiedo a che pro perdere tempo con i giocattoli… ;-)

    Dal momento che il forum, questa sezione, è per chiusa access magari lascierei perdere queste  frasi fatte ripetute a mantra, io proverei a rispondere in modo concreto e circostanziato potrebbe sembrare più simpatico…

    Saluti

    Uso il termine giocattolo solo per evidenziare che molti lo usano come fosse un giocattolo.

    Poi dai delle dritte, e invece di farne tesoro, si sentono colpiti nell'orgoglio.

    Lungi da me dissuadere qualcuno ad usare access, ci sono passato, ti avvia alla programmazione, ma imparare un linguaggio è soltanto la condizione necessaria ma non sufficiente per programmare. Se mi chiedono di sviluppare il sw del rover, prima devo studiare lo spazio, la meccanica e le telecomunicazioni. Gli utenti access non chiedono come impostare una funzione, spesso chiedono come impostare un filtro, come rendere visibile o meno un oggetto… ecco che viene usato come un giocattolo. Ma lungi da me criticare in modo non costruttivo la sezione access, anzi! È uno strumento potente.

  • Re: Impedire andare record succesivo o precedente

    Ho fatto delle prove, ma è andata peggio

    Richiamo la funzione sotto da un pulsante o evento BeforeUpdate pero ricevo tale errore:

    Impossibile salvare i dati nel campo a causa della macro o funzione impostata sulla proprietà prima di aggiornare
    PrivateFunction save_record()
    On Error GoTo Err_save_reocord_Click
     If Me.Dirty Then
     Dim risposta
     risposta = MsgBox("Salvare le modifiche?" & vbCrLf & "(Si=Salva, No=Elimina modifice, Annulla=Continua modifiche", vbYesNoCancel, "Salva modifiche " & Me.name)
     If risposta = vbNo Then
     Me.Undo
     Me.Requery
     cambio_su_modifica Me.name, "M&odifica", False
     Me.Refresh
     ElseIf risposta = vbCancel Then
     Exit Function
     Else
     DoCmd.RunCommand acCmdSaveRecord
     'cambio_su_modifica Me.name, "M&odifica", False
     End If
     Else
     MsgBox "Nessuna modifica", vbInformation
     cambio_su_modifica Me.name, "M&odifica", False
     End If
    Exit_save_reocord_Click:
     Exit Function
    Err_save_reocord_Click:
     MsgBox Err.Description
     Resume Exit_save_reocord_Click
    End Function
  • Re: Impedire andare record succesivo o precedente

    Ti avevo già spiegato come gestire l'annullamento in un'altro 3D, ma vedo che tu non hai fatto NULLA di quanto suggerito e rivedo gli stessi identici errori che ti avevo accennato.

    https://www.iprogrammatori.it/forum-programmazione/access/evitare-salvataggio-automatico-t51615.html

    COSA TI SI DEVE RISPONDERE…?

    Io passo…

  • Re: Impedire andare record succesivo o precedente

    23/06/2023 - lucavalentino ha scritto:


    Nell'evento BeforeUpdate della maschera ho la funzione salva.

    Ciao,

    Perchè usare l'evento BeforeUpdate ?  poi spiegare la logica ?

    p.s. Comunque se non segui i suggerimenti che ti vengono dati, mi sembra abbastanza inutile andare oltre.

  • Re: Impedire andare record succesivo o precedente

    26/06/2023 - By65Franco ha scritto:


    23/06/2023 - lucavalentino ha scritto:


    Nell'evento BeforeUpdate della maschera ho la funzione salva.

    Ciao,

    Perchè usare l'evento BeforeUpdate ?  poi spiegare la logica ?

    p.s. Comunque se non segui i suggerimenti che ti vengono dati, mi sembra abbastanza inutile andare oltre.

    Perchè sarebbe quella giusta essendo Transazionale, ma lui non la usa correttamente come già ampiamente discusso nel 3D indicato… sostanzialmente ha scritto codice errato sotto tutti gli aspetti, spiegati gli errori, ha riscritto la stessa cosa…?
    Mah…

  • Re: Impedire andare record succesivo o precedente

    23/06/2023 - sihsandrea ha scritto:


    Se l'utente tenda di andare ad un altro record (primo, successico ecc.) cambia record e ciò non va bene

    Pericoloso!

    Ma non usi un form dedicato alla modifica e/o inserimento?

    Ma anche una pagina dello stesso form dove non vedi la tabella ma solo il record corrente…

    Immagina se stai inserendo 30 campi… si sposta il focus ad un altro record e… salvare? Si no annulla… ecco, ora annulla ha un senso.

    scusate se avevo fatto una domanda simile (https://www.iprogrammatori.it/forum-programmazione/access/evitare-salvataggio-automatico-t51615.html), ma è più facile chiedrre che cercare.

    Ancora un problem non è stato risoldo

    Dopo che premo il pulsante per la modifica esiste un modo per blocare in qualsiasi modo il cambio di record?

    Vorrei evitare di creare una maschera di lettura e una  per la modifica che sonoidentiche e questo volevo evitarlo

Devi accedere o registrarti per scrivere nel forum
18 risposte