English
Instant Developer Foundation Documentazione
  • Tutorial applicazioni web
  • Scriviamo del codice

Eliminare un documento

copia link
<< Video precedente
Apri in una finestra a tutto schermo.
Video successivo >>

Trascrizione

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 =>

  • 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

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum

Vedi anche

    Scarica il progetto di esempio You Bb Project.zip