Scopo
Cerca un oggetto in base al DBCode e ne ritorna il puntatore. E' molto utile per cercare oggetti di database in base al nome fisico.
E' anche possibile ricercare gli oggetti per GUID con la funzione GetObjectByID e per nome con la funzione GetObjectByName oppure crearsi un proprio algoritmo di ricerca utilizzando un TreeWalker.
Sintassi
int IDOggetto = 0 // Puntatore dell'oggetto trovato
//
IDOggetto := INDE.GetObjectByCode(id oggetto radice, codice, tipo, maschera tipo,
case sensitive)
//
IDOggetto := INDE.GetObjectByCode(id oggetto radice, codice, tipo, maschera tipo,
case sensitive)
Argomenti
ID Oggetto Radice | Puntatore dell'oggetto da cui iniziare la ricerca: l'oggetto desiderato verrà cercato all'interno dell'oggetto radice. Solitamente il puntatore ad un oggetto viene recuperato tramite una delle seguenti funzioni: GetNextObject, GetObjectByID, GetObjectByCode, GetObjectByName, GetParentObject, GetPropObject. |
Codice | Codice dell'oggetto da cercare. |
Tipo | Tipo dell'oggetto che si vuole recuperare. L'elenco dei possibili tipi è contenuto nella lista valori Tipi Oggetto. Il valore predefinito è 0 ossia qualsiasi tipo. In questo parametro è anche possibile esplicitare un "modello" di oggetto, che ne rappresenta un sottotipo, e una "versione", che rappresenta un ulteriore specificazione di tipo. |
Maschera Tipo | Parametro che indica quali parti del parametro Tipo verranno considerate; i possibili valori sono contenuti nella lista valori Tipi Maschera. Il valore predefinito è "Tipo" ovvero si considera solo il tipo di oggetto e non il modello e la versione. |
Case Sensitive | Imposta a VERO se la ricerca deve essere "Case Sensitive". |
Valore di ritorno
Viene ritornato il puntatore del primo oggetto che viene trovato con il codice specificato. Se non è stato trovato nessun oggetto viene ritornato ZERO.
Esempio di codice
// ****************************************************************************
// Evento notificato al documento prima di caricare una collection del suo tipo
// ****************************************************************************
event OggettoBase.BeforeLoadCollection(
IDDocument Parent // E' il documento padre che ha chiesto il caric...
IDCollection Collection // E' la collection da caricare.
inout boolean Skip // Parametro di output booleano. Se impostato a ...
)
{
int prjID = 0 // Puntatore del progetto
//
// Recupero il puntatore del progetto
prjID := GetTag(Project ID)
//
// Se è valorizzato il GUID
if GUID <> Empty String
...
//
// Se è valorizzato il Codice
if DBCode <> Empty String
{
int objID = 0 //
//
// Cerco l'oggetto per Codice
objID := EsempiMS.INDE.GetObjectByCode(prjID, DBCode, ZERO, -65536,
False)
//
// Se ne ho trovato almeno uno
if objID > ZERO
{
OggettoBase obj = new() //
//
// Lo carico
if obj.LoadFromINDE(objID)
{
Collection.Add(obj)
}
}
}
//
// Se è valorizzato il nome
if Nome <> Empty String
...
//
// Se è valorizzato il tipo
if Tipo > ZERO
...
}
// Evento notificato al documento prima di caricare una collection del suo tipo
// ****************************************************************************
event OggettoBase.BeforeLoadCollection(
IDDocument Parent // E' il documento padre che ha chiesto il caric...
IDCollection Collection // E' la collection da caricare.
inout boolean Skip // Parametro di output booleano. Se impostato a ...
)
{
int prjID = 0 // Puntatore del progetto
//
// Recupero il puntatore del progetto
prjID := GetTag(Project ID)
//
// Se è valorizzato il GUID
if GUID <> Empty String
...
//
// Se è valorizzato il Codice
if DBCode <> Empty String
{
int objID = 0 //
//
// Cerco l'oggetto per Codice
objID := EsempiMS.INDE.GetObjectByCode(prjID, DBCode, ZERO, -65536,
False)
//
// Se ne ho trovato almeno uno
if objID > ZERO
{
OggettoBase obj = new() //
//
// Lo carico
if obj.LoadFromINDE(objID)
{
Collection.Add(obj)
}
}
}
//
// Se è valorizzato il nome
if Nome <> Empty String
...
//
// Se è valorizzato il tipo
if Tipo > ZERO
...
}
- Il parametro Maschera Tipo è da utilizzare nel caso in cui si voglia effettuare una ricerca più raffinata specificando anche un modello o una versione. Per esempio se si vuole ricercare tutte gli statement di tipo Update occorre impostare il parametro Tipo alla somma delle costanti "Statement" e "Update" e come Maschera Tipo alla costante "Tipo + modello".
- Se il puntatore passato come parametro ID Oggetto Radice non corrisponde ad alcun oggetto nel progetto aperto, allora verrà generata un'eccezione.
Ultima modifica: 18/07/2012 / Validità: da 7.1.3300