Protocollo corrispondenza

di
Anonimizzato12076
il
9 risposte

Protocollo corrispondenza

Salve a tutti. Ho creato un DB da utilizzare come Registro protocollo con numerazione automatica (campo contatore). Inserisco i dati della corrispondenza tramite una maschera di inserimento dati appositamente creata da dove rilevo il numero di protocollo.
Il problema è che se vado su un record già inserito posso sovrascriverlo perdendo quindi i dati già inseriti o modificarli. E' possibile fare in modo che una volta registrato un record ed avuto il numero progressivo dal campo contatore, i dati non siano così facilmente modificabili? E' prevista insomma
una sorta di protezione dalla cancellazione o modifica anche accidentale dei dati?
Grazie in anticipo per la collaborazione.

9 Risposte

  • Re: Protocollo corrispondenza

    Mi sembra un po' un controsenso. Nel momento in cui li inserisci, potresti anche tu stesso commettere errori di digitazione che sentiresti il bisogno di modificare. Tieni da conto di questo aspetto.

    Però ho un vago ricordo di una richiesta simile alla quale potrei risponderti così:
    1) Aggiungi un campo di tipo Sì/No
    2) Stabilisci una condizione da qualche parte (macro o VBA) in modo che se hai la spunta Sì, non puoi modificare i dati. Se hai la spunta No, puoi modificare. Metti un valore di default No per quando digiti ogni record nuovo. Quando sei sicuro che i dati sono perfetti, aggiungi la spunta Sì.

    Per il momento spero tu abbia compreso la logica che vorrei innescare. Se sei d'accordo, possiamo passare poi a implementare un evento che metta in moto la condizione di cui parlavo sul campo Sì/No.
  • Re: Protocollo corrispondenza

    Il fatto di non averli EDITABILI è comprensibile, certo serve anche prevedere l'EDIT con richiesta e validazione...!

    Di fatto imposta a Consenti Modifiche=NO, poi vai in EVENTI della Maschera e generi la RoutineEvento su CORRENTE:
    
    Private Sub Form_Current()
        Me.AllowEdits=Me.NewRecord
    End Sub
    Questo abiliterà SOLO in fase di NUOVO RECORD.
    Quindi se poi vorrai un metodo di SBLOCCO a richiesta metti un BUTTON che va a Forzare la proprietà ALLOWEDITS=TRUE, ed andrai a gestire l'evento di Maschera BEFOREUPDATE(...) per richiedere conferma e VALIDAZIONE delle modifiche.
  • Re: Protocollo corrispondenza

    Se ho capito il codice di sblocco per consentire le modifiche sarebbe:

    Private Sub Description_BeforeUpdate(Cancel As Integer)
    Me.AllowEdits = True
    End Sub

    E devo creare un pulsante che esegue questa istruzione?
  • Re: Protocollo corrispondenza

    No, non saranno editabili con la proprietà AllowEdits=False, quindi non arriverai mai in quell'evento.

    Concettualmente un RECORD NUOVO è ovviamente editabile, al momento in cui viene salvato diventa NON EDITABILE.
    Quindi prevedi un Button per attivare l'edit
    
    Provate Sub NomeButton_Click()
        Me.AllowEdits=True
    End Sub
    e su evento BeforeUpdate di FORM non di Controllo, vai a chiedere conferma...
    
    Private Sub Form_BeforeUpdate(Cancel As Integer)
        If MsgBox("Vuoi salvare...?",vbyesno)=VbNo then
             Me.Undo
             Cancel=True
        End If
    End Sub
    quindi su Current vai a resettare tutto e/o predisporre nel caso di NUOVO
    
    Private Sub Form_Current()
        Me.AllowEdits=Me.NewRecord
    End Sub
  • Re: Protocollo corrispondenza

    In Visual Basic FROM_NOME&MASCHERA ho i seguenti codici:

    Private Sub CasellaControllo59_Click()
    Me.AllowEdits = True
    End Sub
    -----------------------------------------------------------------------
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    If MsgBox("Vuoi salvare?", vbYesNo) = vbNo Then
    Me.Undo
    Cancel = True
    End If
    End Sub
    -------------------------------------------------------------------------
    Private Sub Form_Current()
    Me.AllowEdits = Me.NewRecord
    End Sub

    La protezione dei dati e la richiesta di salvataggio funzionano, ma la prima routine (modifica dati) NO.
    DOVE STO SBAGLIANDO?
  • Re: Protocollo corrispondenza

    Private Sub CasellaControllo59_Click()
    Me.AllowEdits = True
    End Sub
    hai sbagliato controllo, non deve essere una casella, ma un command button
    Private Sub command_button59_Click()
    Me.AllowEdits = True
    End Sub
    In questo modo, cliccando attivi il form
  • Re: Protocollo corrispondenza

    Tutto Ok.
    Vorrei ora, se non è troppo complesso, inserire delle protezioni di accesso alla modalità struttura e la richiesta di password dopo il click al comand button (che abilita alla modifica dati).
  • Re: Protocollo corrispondenza

    Ti propongo questo esempio:
    http://forum.masterdrive.it/access-79/login-sicurezza-form-44771/
  • Re: Protocollo corrispondenza

    Grazie per l'aiuto.
Devi accedere o registrarti per scrivere nel forum
9 risposte