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

OnSQLQuery

evento copia link

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
  }
}
  • L'impostazione del parametro WhereClause ha effetto solo se la query è di caricamento.

Ultima modifica: 06/09/2024 / Validità: da 7.1.3300

Vedi Anche

  • Servizi Generalizzati
  • On Get Smart Lookup (evento)
  • Tipi Query Documento (lista valori)
  • Load From DB (procedura)
  • Load Collection From DB (procedura)
  • Save To DB (funzione)
  • On Get Value Source (evento)
  • Load Collection By Example (procedura)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum