Eliminare un documento
copia linkTrascrizione

Per parlare di eliminazione di un documento bisogna ricordarsi il concetto denominato Stato di un documento (che abbiamo visto nei tutorial precedenti): vi ricordo che i documenti posseggono proprietà boolean che indicano la situazione del documento =>
Per eliminare un documento si agisce per step:
Si perché la cancellazione alla fine è un salvataggio, infatti scatteranno i classici eventi documentali di salvataggio come OnValidate, BeforeSave AfterSave: il framework comunicherà al database l’intenzione di eliminare il record con l’istruzione SQL DELETE.
Facciamo un esempio nel progetto YouBB: nella videata Prenotazioni vorrei aggiungere un pulsante, un command Button che consenta di eliminare tutti i servizi inseriti (ad esempio per ricominciare la compilazione): ancor meglio sarebbe se prima dell’operazione reale venisse chiesta conferma all’utente.
Questa operazione, che sembrerebbe tutta di interfaccia, prevede una parte di interfaccia con la richiesta all’utente e una parte documentale per la cancellazione: creiamo subito il metodo cancellaServizi() nel documento Prenotazioni.
Albero di progetto => Documento Prenotazione => Tasto destro => Aggiungi Procedura.
Public void cancellaServizi() {
//SARA UNA CANCELLAZIONE IN MEMORIA NON IMMEDIATAMENTE REALE, QUANDO POI SI SALVERA’ VERRANNO ELIMINATI REALMENTE
If (not(PrenotazioneServizi.loaded) and not(inserted)) {
loadCollectionFromDB(PrenotazioneServizi)
}
For each PrenotazioneServizi recPS of {
recPS.deleted = true
}
calcolaTotale()
}
I documenti in stato deleted non vengono mostrati in interfaccia (quindi nei pannelli non li troviamo) e vengono esclusi dalle iterazioni successive (quindi se facciamo una nuova for each si esce subito perché non ci sarebbero elementi ciclabili).
Il codice è pronto ora preoccupiamoci della parte interfaccia, in primis vado nel template grafico a recuperare una immagine che rappresenta un cestino delete.gif, la copio nella cartella customapp cambiando il nome in mydelete.gif; torniamo nel progetto e nella videata Prenotazioni aggiungiamo un'immagine (campo statico), e quindi scegliamo mydelete.gif.
Cambiamo il nome al campo statico ed impostiamo Delete Servizi e non dimentichiamoci della Proprietà Visuale Cliccabile da selezionare per rendere l’immagine cliccabile.
Ora possiamo aggiungere la procedura.
Public void DeleteServizi() {
Prenotazione docPrenotazione = PRENOTAZIONI.document
string Message
int iRisp = 0
if (docPrenotazione != null) {
//CARICAMENTO RITARDATO
If (not(docPrenotazione.PrenotaServizi.loaded) and not(inserted)
docPrenotazione.loadCollectionFormDB(docPrenotazione.PrenotaServizi)
if (docPrenotazione.PrenotaServizi.count != 0) {
Message = “Si vuole cancellare i servizi?”
iRisp = messageconfirmEx(Message, “Si;No”)
if isnull(iRisp)
return
else
docPrenotazione.cancellaServizi()
}
Else {
Messagebox(‘Servizi non presenti”)
}
}
}
Cancellare un documento è quindi un'operazione svolta in 2 step: prima si dichiara deleted il documento e successivamente si esegue il salvataggio per inviare l’istruzione DELETE al motore database.
- Inserted = TRUE indica che si tratta di un nuovo documento che sarà successivamente salvato e non ancora presente sul database
- isModified = TRUE indica che il documento esiste sul database e in memoria è stato modificato (pronto per un nuovo salvataggio)
- ed infine appunto Deleted = TRUE indica che il documento si appresta ad essere cancellato alla prossima interazione database
Per eliminare un documento si agisce per step:
- Step 1: Si imposta la proprietà deleted del documento a TRUE
- Step 2: Si esegue il metodo saveToDB
Si perché la cancellazione alla fine è un salvataggio, infatti scatteranno i classici eventi documentali di salvataggio come OnValidate, BeforeSave AfterSave: il framework comunicherà al database l’intenzione di eliminare il record con l’istruzione SQL DELETE.
Facciamo un esempio nel progetto YouBB: nella videata Prenotazioni vorrei aggiungere un pulsante, un command Button che consenta di eliminare tutti i servizi inseriti (ad esempio per ricominciare la compilazione): ancor meglio sarebbe se prima dell’operazione reale venisse chiesta conferma all’utente.
Questa operazione, che sembrerebbe tutta di interfaccia, prevede una parte di interfaccia con la richiesta all’utente e una parte documentale per la cancellazione: creiamo subito il metodo cancellaServizi() nel documento Prenotazioni.
Albero di progetto => Documento Prenotazione => Tasto destro => Aggiungi Procedura.
Public void cancellaServizi() {
//SARA UNA CANCELLAZIONE IN MEMORIA NON IMMEDIATAMENTE REALE, QUANDO POI SI SALVERA’ VERRANNO ELIMINATI REALMENTE
If (not(PrenotazioneServizi.loaded) and not(inserted)) {
loadCollectionFromDB(PrenotazioneServizi)
}
For each PrenotazioneServizi recPS of {
recPS.deleted = true
}
calcolaTotale()
}
I documenti in stato deleted non vengono mostrati in interfaccia (quindi nei pannelli non li troviamo) e vengono esclusi dalle iterazioni successive (quindi se facciamo una nuova for each si esce subito perché non ci sarebbero elementi ciclabili).
Il codice è pronto ora preoccupiamoci della parte interfaccia, in primis vado nel template grafico a recuperare una immagine che rappresenta un cestino delete.gif, la copio nella cartella customapp cambiando il nome in mydelete.gif; torniamo nel progetto e nella videata Prenotazioni aggiungiamo un'immagine (campo statico), e quindi scegliamo mydelete.gif.
Cambiamo il nome al campo statico ed impostiamo Delete Servizi e non dimentichiamoci della Proprietà Visuale Cliccabile da selezionare per rendere l’immagine cliccabile.
Ora possiamo aggiungere la procedura.
Public void DeleteServizi() {
Prenotazione docPrenotazione = PRENOTAZIONI.document
string Message
int iRisp = 0
if (docPrenotazione != null) {
//CARICAMENTO RITARDATO
If (not(docPrenotazione.PrenotaServizi.loaded) and not(inserted)
docPrenotazione.loadCollectionFormDB(docPrenotazione.PrenotaServizi)
if (docPrenotazione.PrenotaServizi.count != 0) {
Message = “Si vuole cancellare i servizi?”
iRisp = messageconfirmEx(Message, “Si;No”)
if isnull(iRisp)
return
else
docPrenotazione.cancellaServizi()
}
Else {
Messagebox(‘Servizi non presenti”)
}
}
}
Cancellare un documento è quindi un'operazione svolta in 2 step: prima si dichiara deleted il documento e successivamente si esegue il salvataggio per inviare l’istruzione DELETE al motore database.
Ultima modifica: 19/03/2021 / Validità: da 20.5.8000