English
Instant Developer Foundation Documentazione
  • Reference Librerie
  • Document Orientation
  • ID Document
  • Data Base

Save To DB

funzione copia link

Scopo

Questa funzione salva il documento nello stato attuale sul database. Nota: se il documento è in stato cancellato, allora il salvataggio ne causa la cancellazione dal database.

Sintassi

boolean OK = False         // Salvataggio OK?
// 
OK := Documento.SaveToDB(numero livelli, rivalidazione)

Argomenti

Numero Livelli Parametro opzionale intero che specifica quali sotto-documenti devono essere salvati. Per default TUTTI i sotto-documenti modificati vengono salvati ed è bene non modificare questa impostazione.
Rivalidazione Parametro opzionale booleano con valore di default True. Se impostato a False, non effettua la rivalidazione del documento prima del salvataggio. Normalmente la rivalidazione è consigliata.

Valore di ritorno

Viene ritornato True se il documento è stato salvato correttamente, False altrimenti. In questo caso è possibile utilizzare le funzioni di gestione degli errori per estrarre gli errori avvenuti.

Procedura di salvataggio

La procedura di salvataggio viene effettuata con i seguenti passi:

  1. Vengono impostate le proprietà di correlazione fra documenti e sotto-documenti in modo da soddisfare i vincoli di Foreign Key del database.
  2. Se è stata richiesta la rivalidazione allora il documento viene rivalidato. Se ci sono errori, la procedura di salvataggio termina e ritorna False.
  3. Se nel database in cui il documento deve salvarsi non è stata ancora aperta una transazione, essa viene aperta ora.
  4. Viene notificato l'evento di BeforeSave a tutti i documenti e sotto-documenti in fase di salvataggio con parametro fase = 0 che significa PRE-SAVE. L'evento viene notificato a tutti, anche se essi non sono stati modificati.
  5. Viene notificato l'evento di BeforeSave a tutti i documenti e sotto-documenti in fase di salvataggio con parametro fase = 1 che significa INSERTING. L'evento viene notificato a tutti, anche se essi non sono stati modificati. Dopo la notifica, i documenti in stato inserito vengono effettivamente inseriti nel database.
  6. Viene notificato l'evento di BeforeSave a tutti i documenti e sotto-documenti in fase di salvataggio con parametro fase = 2 che significa UPDATING. L'evento viene notificato a tutti, anche se essi non sono stati modificati. Dopo la notifica, i documenti in stato aggiornati vengono effettivamente aggiornati nel database.
  7. Viene notificato l'evento di BeforeSave a tutti i documenti e sotto-documenti in fase di salvataggio con parametro fase = 3 che significa DELETING. L'evento viene notificato a tutti, anche se essi non sono stati modificati, con ordine invertito rispetto ai passi precedenti, cioè dai figli verso i padri. Dopo la notifica, i documenti in stato cancellato vengono effettivamente cancellati dal database.
  8. Viene notificato l'evento di AfterSave a tutti i documenti e sotto-documenti in fase di salvataggio. Dopo la notifica il documento viene reso in stato originale chiamando la SetOriginal ed impostando la proprietà Loaded a True. In questa fase i sotto-documenti cancellati vengono rimossi definitivamente dalle collection che li contengono.
  9. Se non ci sono stati errori e questa proceduta aveva aperto la transazione sul database, allora essa viene confermata (commit). Se ci sono stati errori invece essa viene annullata (rollback).

Note

  • Il framework DO suppone che i sotto-documenti di documenti cancellati vengano eliminati automaticamente dal database tramite relazioni di tipo Delete Cascade. Se questo non può essere fatto è conveniente modificare lo stato dei sotto-documenti nell'evento di BeforeSave fase PRE-SAVE in modo da attivare la cancellazione esplicita dei sotto-documenti quando il documento padre è in stato cancellato. Vedi anche la funzione IsDeleted utile in questo contesto.
  • Quando un pannello DO master salva il documento o la collection chiama internamente questa funzione.

Ultima modifica: 12/01/2023 / Validità: da 6.5.2680

Vedi Anche

  • Is Deleted (funzione)
  • Set Original (procedura)
  • Loaded (proprietà)
  • Before Save (evento)
  • After Save (evento)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum