Scopo
Tramite la funzione statica GetFromDNA è possibile creare e caricare da database istanze di documenti in maniera generalizzata, senza conoscere il tipo e le proprietà identificative.
Sintassi
IDDocument doc := IDDocument.GetFromDNA(dna, usa cache, numero livelli)
Argomenti
dna | Stringa che identifica il documento da creare e caricare, solitamente ottenuta tramite la funzione GetDNA |
usa cache | Parametro opzionale booleano con valore di defalt true. Se impostato a true o lasciato vuoto il documento verrà ricercato nella cache di documenti locale prima di caricarlo dal database |
numero livelli | Parametro opzionale intero che indica il numero di livelli di sotto-documenti da caricare. Il valore di default è zero, che indica di caricare solo il documento richiesto e non i suoi sottodocumenti |
Valore di ritorno
Viene ritornato il documento creato ed eventualmente caricato dal database
Esempio di codice
// **************************************************************************
// Evento notificato dal book quando l'utente esegue un doppio click nel book
// **************************************************************************
event Desktop.LibroDesktop.OnMouseDoubleClick(
int Button //
int X //
int Y //
int XB //
int YB //
int BoxID //
inout boolean Cancel //
)
{
// Apro il documento corrispondente all'icona
if Button = Left AND BoxID = LibroDesktop.NuovoReport.Icona.Me()
{
IDDocument d := IDDocument.GetFromDNA(LibroDesktop.DocDNAIcona, ??, ??)
IDForm f := d.Show(Popup)
//
f.Left := XB + 64
f.Top := YB - 32
}
}
// Evento notificato dal book quando l'utente esegue un doppio click nel book
// **************************************************************************
event Desktop.LibroDesktop.OnMouseDoubleClick(
int Button //
int X //
int Y //
int XB //
int YB //
int BoxID //
inout boolean Cancel //
)
{
// Apro il documento corrispondente all'icona
if Button = Left AND BoxID = LibroDesktop.NuovoReport.Icona.Me()
{
IDDocument d := IDDocument.GetFromDNA(LibroDesktop.DocDNAIcona, ??, ??)
IDForm f := d.Show(Popup)
//
f.Left := XB + 64
f.Top := YB - 32
}
}
- Se la stringa passata come parametro DNA contiene solo il nome della classe, allora verrà creato il documento ma non verrà caricato dal database.
- Prima di iniziare il caricamento viene verificato che la stringa DNA contenga il valore per tutti i parametri identificativi del documento stesso.
- Se in una versione successiva dell'applicazione viene cambiato il nome della classe o il numero delle proprietà identificative, allora non sarà più possibile utilizzare le stringhe DNA ottenute con la versione precedente dell'applicazione.
- Se il documento non può essere trovato nel database esso rimane in stato non caricato (Loaded = false) ma non viene generata un'eccezione.
-
A partire dalla versione 10.1 se il DNA contiene il carattere | (pipe) il sistema utilizza ciò che è prima del carattere | come nome della libreria che contiene il componente e ciò che segue il carattere | come nome della classe di cui creare l'istanza. In particolare:
- Se il DNA è nel seguente formato
[NOME_LIBRERIA]|[NOME_CLASSE],[PK]
il sistema cercherà la libreria del componente all'interno della cartella in cui normalmente risiedono i componenti (Bin per DLL C#, WEB-INF/lib per JAR Java). - Se il DNA è nel seguente formato:
Bin\[NOME_LIBRERIA]|[NOME_CLASSE],[PK] per C# WEB-INF/lib/[NOME_LIBRERIA]|[NOME_CLASSE],[PK] per Java
il sistema aggiungerà il percorso (Path) in cui si trova l'applicazione per calcolare il percorso completo della libreria del componente. - Se il DNA è nel seguente formato:
[PERCORSO_COMPLETO_LIBRERIA]|[NOME_CLASSE],[PK]
il sistema cerca la libreria nel percorso indicato nel DNA.
- Se il DNA è nel seguente formato
Ultima modifica: 20/09/2021 / Validità: da 8.5.3800