Blocco record access

giovedì 27 marzo 2008 - 16.10

sangel972 Profilo | Newbie

salve, sempre io
dovrei fare in modo che un'utente, dopo avere inserito i dati su un record, possa dare una conferma, magari con un controllo, e poi non possa più modificare ciò che ha inserito.
potete aiutarmi?

alx_81 Profilo | Guru

>salve,
Ciao!

>dovrei fare in modo che un'utente, dopo avere inserito i dati
>su un record, possa dare una conferma, magari con un controllo,
>e poi non possa più modificare ciò che ha inserito.
>potete aiutarmi?
Con access, a mio avviso, questa è una logica che va gestita applicativamente. Mi spiego. Se devo far inserire un record e poi, dopo particolari eventi ed al verificarsi di alcune condizioni, bloccare la modifica, ragionerei con un campo stato.
Ipotizza di avere una tabella che contiene un elenco di documenti ufficiali, i quali, dopo un determinato periodo, devono essere archiviati e dichiarati immodificabili. Predisporrei un campo STATO che definisce il livello di accesso al record.
Ad esempio, 1 = modificabile, 2 = archiviato. E ogni operazione di modifica non è consentita se lo stato è uguale a 2.
Fisicamente sono due tabelle, quella dei documenti con l'idstato e quella degli stati con la descrizione degli stati per il documento.

Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

sangel972 Profilo | Newbie

la tua idea mi sembra ottima.
puoi spiegarmi come potrei fare a metterla in pratica? magari con un'esempio?.

grazie 1000 per la tua pazienza

alx_81 Profilo | Guru

>la tua idea mi sembra ottima.
>puoi spiegarmi come potrei fare a metterla in pratica? magari
>con un'esempio?.
E' decisamente una cosa lunga . Implica sia la scrittura di codice che la creazione di tabelle a database.
Posso instradarti dicendo che devi fare aggiungere un campo Stato (numerico, o carattere lungo uno, vedi tu) nella tabella che vuoi "bloccare".

Una volta fatto ciò, tutti i record nuovi che inserisci li metti ad uno stato iniziale (ad esempio 1, il tuo corrispondente di "attivo").
Quando decidi che il record sia immodificabile (ad esempio il messaggio di conferma di cui parlavi) fai una update su quel record (per chiave quindi) impostando lo stato a "bloccato" (ad esempio 2).
Ogni query che estrae i record modificabili avranno nel filtro un "WHERE Stato = 1". In questo modo renderai visibili solo i "liberi dal blocco". Dove invece devi visualizzare indistintamente i record bloccati e non, togli la condizione di filtro.

>
>grazie 1000 per la tua pazienza
figurati, per ora prova ad implementare il tutto. Noi siamo qui.

Alx81 =)

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

TOPOAMORE Profilo | Expert

Ciao
Crea un pulsante di conferma dove quando verra cliccato andra a settare un campo stato (si/no in Access) aal'interno della tabella e con un conseguente refresh della maschera.

sulla maschera vai ad attivare l'evento su corrente e fai fare una verifica sul bit stato. se tale bit sara true il dato sara immodificabile altrimenti si puo modificare

esempio

evento su corrente

if bitStato=true then
me.allowedit.enable=false
end if

evento click su coferma

me.bitstato=true
me.refresh

Ciaooo e fammi sapere

cuogia Profilo | Newbie

Un saluto a tutto il forum!!!
Riprendo questo post xchè mi sembra possa essere quello che cerco però ho qualche problema e chiedo un aiutino:
Ho creato database per registrare le entrate del pubblico presso l'azienda dovo lavoro.
I campi sono data e ora accesso,cognome,nome,ora uscita ed ora conferma.
Ho bloccato la possibilità di modificare i dati quando il record è stato completato e si passa al successivo con AllowEdits=false in VBA, però adesso il problema è questo:
Se vi sono più personein entrata devo per forza cambiare record e quindi una volta che escono il campo ora_uscita è bloccato e non si può più modificare.
La soluzione proposta dal post è ottima però non riesco a farla funzionare:

ho aggiunto in tabella il campo conferma sì/no con formato vero/falso
ho aggiunto nella maschera il campo conferma

nel codice ho inserito:
Private Sub conferma_Click()
Me.conferma = True
Me.Refresh

End Sub

Private Sub Form_Current()
If conferma = True Then
Me.AllowEdits = False
End If
End Sub

se lascio bitstato come nell'esempio mi riporta l'errore: Errore di compilazione impossibile trovare il metodo o il membro dei dati
se cambio con conferma mi blocca tutte le caselle sia che sia true sia che sia false.

P.S. la voce me.allowedit.enable=false mi riporta un errore Errore di compilazione impossibile trovare il metodo o il membro dei dati
per questo l'ho cambiato con Me.AllowEdits = False

Dov'è l'errore...
Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5