Condizioni di notifica
Questo evento viene notificato al documento prima dell'esecuzione di query di caricamento o aggiornamento. Questo può avvenire per le seguenti ragioni:
- Il documento è in fase di caricamento tramite la funzione LoadFromDB.
- Una collection è in fase di caricamento tramite la funzione LoadCollectionFromDB.
- Una collection sta per essere caricata tramite il metodo LoadCollectionByExample.
- Il documento sta per essere salvato sul database tramite la SaveToDB.
- Il documento sta recuperando una lista valori (OnGetValueSource).
- Il documento sta eseguendo uno smart lookup (OnGetSmartLookup).
- (dalla versione 11.1) Il documento sta caricando una lista valori per una proprietà estesa.
Utilizzo consigliato
Normalmente questo evento viene reso globale per creare servizi documentali di auditing o di filtro generalizzato. Tramite i metodi di riflessione ed il parametro WhereClause è infatti possibile aggiungere un filtro generico alle condizioni di caricamento dei documenti, come illustrato nell'esempio online. Per maggiori informazioni sugli eventi globali, vedi il relativo articolo di approfondimento.
Argomenti
| SQL Query | E' il testo della query che sta per essere eseguita, al netto di eventuali condizioni di ordinamento. |
| Tipo | Tipo di query: rappresenta la circostanza per cui la query sta per essere eseguita. Vedi la lista valori TipiQueryDocumento per leggere l'elenco dei possibili valori. |
| Where Clause | E' un parametro di output di tipo stringa. Può essere impostato ad un'espressione SQL che verrà aggiunta come condizione di where alla query di caricamento per cui viene notificato l'evento. |
Esempio di codice
// *******************************************************************************************
// Evento notificato al documento prima di eseguire una query SQL di selezione o aggiornamento
// *******************************************************************************************
event MyDocumentHelper.GlobalDocumentSQLQuery(
IDDocument Document // Oggetto che notifica questo evento
string SQLQuery // Testo della query SQL che verrà eseguita
int Tipo // Tipo di query (vedi lista valori TIpi Query Documento)
inout string WhereClause // Stringa da impostare se si vuole aggiungere altre clausole whe...
)
{
IDDocumentStructure ds = null // Lo schema del documento
int i = 1 // Contatore per le proprietà
//
// Recupero lo schema del documento
ds := Document.GetStructure()
//
// Ciclo su tutte le proprietà del documento
while i <= ds.GetPropertyCount()
{
IDPropertyDefinition pd = null // La definizione della proprietà i-esima
//
pd := ds.GetPropertyDefinition(i)
//
// Se la proprietà inizia per nome, aggiungo il filtro
if Left(pd.Tag, C4) = Nome AND EsempiDO.FiltroGeralizzato.Nome <> Empty String
{
// Applico un'espressione: nome like '%filtro%'
WhereClause := FormatMessage(Filtro SQL, pd.DBCode, EsempiDO.FiltroGeralizzato.Nome,
??, ??, ??)
//
break
}
//
// Prossima proprietà
i := i + ONE
}
}
// Evento notificato al documento prima di eseguire una query SQL di selezione o aggiornamento
// *******************************************************************************************
event MyDocumentHelper.GlobalDocumentSQLQuery(
IDDocument Document // Oggetto che notifica questo evento
string SQLQuery // Testo della query SQL che verrà eseguita
int Tipo // Tipo di query (vedi lista valori TIpi Query Documento)
inout string WhereClause // Stringa da impostare se si vuole aggiungere altre clausole whe...
)
{
IDDocumentStructure ds = null // Lo schema del documento
int i = 1 // Contatore per le proprietà
//
// Recupero lo schema del documento
ds := Document.GetStructure()
//
// Ciclo su tutte le proprietà del documento
while i <= ds.GetPropertyCount()
{
IDPropertyDefinition pd = null // La definizione della proprietà i-esima
//
pd := ds.GetPropertyDefinition(i)
//
// Se la proprietà inizia per nome, aggiungo il filtro
if Left(pd.Tag, C4) = Nome AND EsempiDO.FiltroGeralizzato.Nome <> Empty String
{
// Applico un'espressione: nome like '%filtro%'
WhereClause := FormatMessage(Filtro SQL, pd.DBCode, EsempiDO.FiltroGeralizzato.Nome,
??, ??, ??)
//
break
}
//
// Prossima proprietà
i := i + ONE
}
}
- L'impostazione del parametro WhereClause ha effetto solo se la query è di caricamento.
Ultima modifica: 06/09/2024 / Validità: da 7.1.3300
evento