Modificare e salvare il documento
copia linkTrascrizione

Tra non molto aggiungeremo all’applicazione un accesso tramite credenziali, ciò significa che potranno accedere solo coloro che sono presenti nella tabella Utenti; vorrei aggiungere una informazione alla tabella e precisamente la data e ora di ultimo accesso: in primis modifichiamo la struttura del database, Albero di progetto => database Dati App, tabella Utenti, tasto destro Aggiungi Campo.
Assegniamo come Nome Data Ora Ultimo Accesso, come esempi una data ora ed impostiamo il check Opzionale: confermiamo.
Ricordiamoci che alla compilazione dovremo aggiornare la struttura database a seguito di questa modifica.
Passiamo all’interfaccia ed aggiungiamo il campo alla Videata Utenti: vi ricordo che automaticamente è stata aggiunta la proprietà al documento Utente, ma per quanto riguarda l’interfaccia l’operazione è manuale.
Espandiamo il ramo videata, quindi pannello, qui troviamo la Master Query di caricamento e aggiungiamo il campo Data Ora Ultima Modifica: quindi con il tasto destro Aggiungi Campo lo trasformiamo in campo di pannello.
Entriamo con doppio clic nelle proprietà del campo di pannello ed impostiamo solo il Layout Dettaglio e togliamo il check alla voce Abilitato.
A questo punto abbiamo bisogno di un metodo a cui noi passeremo Username e Password in chiaro, la trasformeremo in Password criptata, caricheremo dal database il documento Utente con questi parametri e se presente significa che potremo consentire l’accesso all’applicazione: andremo a modificare la Data Ora Ultimo Accesso e a salvare la modifica sul database.
Questo metodo verrà utilizzato nella fase di login (che conosceremo nei prossimi tutorial), ora preoccupiamoci di implementare il metodo: secondo voi in quale punto del progetto ha senso implementare questo metodo statico di controllo login ? Sicuramente nel documento Utente; Albero di progetto => Documento Utente => Tasto Destro Aggiungi Procedura, chiamiamo il metodo checkLogin.
Aggiungiamo 2 parametri in ingresso al metodo: parametro user e pwd che saranno le informazioni recuperate da una pagina di login; ora per caricare un documento Utente abbiamo bisogno di una variabile che possa contenere il documento, istanziarla e valorizzare le proprietà come filtro di caricamento; Il filtro di caricamento sarà la proprietà Username e la proprietà PasswordCriptata che in teoria non abbiamo ma possiamo calcolarla dalla Pwd in chiaro che l’utente ci ha fornito grazie al metodo cryptPassword.
Public Utente static checkLogin (string user, string pwd) {
Utente docUtente = null
docUtente = new()
docUtente.Username = user
docUtente.PasswordInput = pwd
docUtente.criptPassword()
docUtente.PasswordInput =null
try {
docUtente.loadFromDb()
}
Catch {
docUtente = null
}
If (docUtente != null) {
If (docUtente.ValidoFino < today() ) {
//Account Scaduto
docUtente = null
}
}
If (docUtente != null) {
//Modifico il documento
docUtente.DataOraUltimoAccesso = now()
//Risalvo il documento
docUtente.saveToDb()
}
Return docUtente
}
Una volta che il documento è in memoria, possiamo manipolarlo, modificarlo e all’occorrenza salvare il documento: tutti gli eventi documentali previsti scatteranno, quindi OnValidate, BeforeSave, AfterSave esattamente come se l’operazione avvenisse in interfaccia.
Il test vero e proprio di questo metodo è rimandato alla sezione successiva di tutorial dove appunto parleremo di Accesso all’applicazione: per ora mandiamo in compilazione l’applicazione per aggiornare il database, non dimenticatevi di eseguire l’operazione anche sul vostro database locale.
Assegniamo come Nome Data Ora Ultimo Accesso, come esempi una data ora ed impostiamo il check Opzionale: confermiamo.
Ricordiamoci che alla compilazione dovremo aggiornare la struttura database a seguito di questa modifica.
Passiamo all’interfaccia ed aggiungiamo il campo alla Videata Utenti: vi ricordo che automaticamente è stata aggiunta la proprietà al documento Utente, ma per quanto riguarda l’interfaccia l’operazione è manuale.
Espandiamo il ramo videata, quindi pannello, qui troviamo la Master Query di caricamento e aggiungiamo il campo Data Ora Ultima Modifica: quindi con il tasto destro Aggiungi Campo lo trasformiamo in campo di pannello.
Entriamo con doppio clic nelle proprietà del campo di pannello ed impostiamo solo il Layout Dettaglio e togliamo il check alla voce Abilitato.
A questo punto abbiamo bisogno di un metodo a cui noi passeremo Username e Password in chiaro, la trasformeremo in Password criptata, caricheremo dal database il documento Utente con questi parametri e se presente significa che potremo consentire l’accesso all’applicazione: andremo a modificare la Data Ora Ultimo Accesso e a salvare la modifica sul database.
Questo metodo verrà utilizzato nella fase di login (che conosceremo nei prossimi tutorial), ora preoccupiamoci di implementare il metodo: secondo voi in quale punto del progetto ha senso implementare questo metodo statico di controllo login ? Sicuramente nel documento Utente; Albero di progetto => Documento Utente => Tasto Destro Aggiungi Procedura, chiamiamo il metodo checkLogin.
Aggiungiamo 2 parametri in ingresso al metodo: parametro user e pwd che saranno le informazioni recuperate da una pagina di login; ora per caricare un documento Utente abbiamo bisogno di una variabile che possa contenere il documento, istanziarla e valorizzare le proprietà come filtro di caricamento; Il filtro di caricamento sarà la proprietà Username e la proprietà PasswordCriptata che in teoria non abbiamo ma possiamo calcolarla dalla Pwd in chiaro che l’utente ci ha fornito grazie al metodo cryptPassword.
Public Utente static checkLogin (string user, string pwd) {
Utente docUtente = null
docUtente = new()
docUtente.Username = user
docUtente.PasswordInput = pwd
docUtente.criptPassword()
docUtente.PasswordInput =null
try {
docUtente.loadFromDb()
}
Catch {
docUtente = null
}
If (docUtente != null) {
If (docUtente.ValidoFino < today() ) {
//Account Scaduto
docUtente = null
}
}
If (docUtente != null) {
//Modifico il documento
docUtente.DataOraUltimoAccesso = now()
//Risalvo il documento
docUtente.saveToDb()
}
Return docUtente
}
Una volta che il documento è in memoria, possiamo manipolarlo, modificarlo e all’occorrenza salvare il documento: tutti gli eventi documentali previsti scatteranno, quindi OnValidate, BeforeSave, AfterSave esattamente come se l’operazione avvenisse in interfaccia.
Il test vero e proprio di questo metodo è rimandato alla sezione successiva di tutorial dove appunto parleremo di Accesso all’applicazione: per ora mandiamo in compilazione l’applicazione per aggiornare il database, non dimenticatevi di eseguire l’operazione anche sul vostro database locale.
Ultima modifica: 19/03/2021 / Validità: da 20.5.8000