Scopo
Questa procedura copia un documento da un altro della stessa classe e può essere usata per ottenere una copia identica di due documenti in memoria.
Questa procedura può essere utile negli algoritmi per disaccoppiare le modifiche fatte in una copia del documento da quelle fatte sull'altra.
Sintassi
Documento.CopyFrom(documento originale, copy private, copy object)
Argomenti
Documento Originale | Il documento da cui copiare i dati. Attenzione: verrà copiato l'intero documento, anche i sotto-documento contenuti nelle Collection. |
Copy Private | Parametro opzionale booleano con valore di default falso. Se valorizzato a True indica se occorre copiare anche le proprietà private. |
Copy Object | Parametro opzionale booleano con valore di default falso. Se valorizzato a True indica se occorre copiare anche le proprietà di tipo oggetto. |
Esempio di codice
// ****************************
// Called when a form is loaded
// ****************************
event Corriere2.Load()
{
Corriere c1 = new() // Il corriere da editare
Corriere c2 = new() // Il corriere copiato
//
// Carico il corriere 1 dal DB
c1.Idcorriere := ONE
c1.LoadFromDB(??)
//
// Copio nel corriere 2 lo stesso contenuto di 1
c2.CopyFrom(c1)
//
// Attacco i vari documenti ai pannelli
Corriere.Document := c1
Corriere1.Document := c1
Corriere2.Document := c2
}
// Called when a form is loaded
// ****************************
event Corriere2.Load()
{
Corriere c1 = new() // Il corriere da editare
Corriere c2 = new() // Il corriere copiato
//
// Carico il corriere 1 dal DB
c1.Idcorriere := ONE
c1.LoadFromDB(??)
//
// Copio nel corriere 2 lo stesso contenuto di 1
c2.CopyFrom(c1)
//
// Attacco i vari documenti ai pannelli
Corriere.Document := c1
Corriere1.Document := c1
Corriere2.Document := c2
}
- Se Documento Originale non è della stessa classe di Documento, allora si potrebbero ottenere delle eccezioni. Se tuttavia i documenti, anche appartenendo a classi diverse, hanno una struttura dati compatibile, cioè hanno lo stesso numero di proprietà e collection pubbliche, allora i dati verranno copiati dall'uno all'altro facendo corrispondere le proprietà in modo posizionale: la prima con la prima, la seconda con la seconda ecc.
- Solo la parte caricata e presente in memoria di Documento Originale verrà copiata.
- Se il documento attuale conteneva sotto-documenti nelle proprie collection, essi vengono cancellati dalla memoria e rimpiazzati dalle copie dei sotto-documenti di documento originale.
- A differenza della funzione Duplicate, nessuna modifica alle proprietà Primary Key, Doc ID o Foreign Key viene effettuata, ne vengono notificati eventi ai documenti.
- Attualmente vengono copiati gli stati di Updated, Inserted e Deleted, ma NON vengono copiati i valori originali delle proprietà, gli errori ed i warning attaccati al documento originale e lo stato di Loaded del documento e delle collection.
- Attenzione: il metodo CopyFrom NON copia proprietà di tipo oggetto (pubbliche o private) e NON copia proprietà private di qualunque tipo esse siano. In versione 22.0 sono stati aggiunti i parametri CopyPrivate e CopyObject che permettono di indicare al sistema se effettuare o meno la copia delle proprietà private e/o di tipo oggetto.
Ultima modifica: 09/02/2024 / Validità: da 6.5.2680