Scopo
Questa procedura permette di recuperare le clausole Where e Order By che sarebbero state utilizzate per il caricamento della collection da parte della funzione LoadCollectionByExample e simili. L'utilizzo primario di questa procedura e quello di consentire il caricamento personalizzato delle collection all'interno dell'evento BeforeLoadCollection senza perdere la gestione automatica del QBE.
Sintassi
Documento.GetQBEClauses(collection, usa qbe, where clause, order by clause, alias)
Argomenti
| Collection | Collection da cui verranno estratti i criteri di ordinamento per calcolare la clausola Order By. E' possibile passare null object. |
| Usa QBE | Parametro booleano. Se impostato a True allora i valori delle proprietà del documento verranno interpretati come criteri QBE. |
| Where Clause | E' un parametro stringa di output che conterrà la clausola di Where calcolata dalla procedura. |
| Order By Clause | E' un parametro stringa di output che conterrà la clausola di Order By calcolata dalla procedura. |
| Alias | E' un parametro di input/output che conterrà l'alias utilizzato per costruire i nomi delle colonne delle clausole. Vedi le note per maggiori informazioni. |
Esempio di codice
// ****************************************************************************
// Evento notificato al documento prima di caricare una collection del suo tipo
// ****************************************************************************
event ProdottoBE.BeforeLoadCollection(
IDDocument Parent // E' il documento padre che ha chiesto il caricamento della collection. Può essere Nul...
IDCollection Collection // E' la collection da caricare.
inout boolean Skip // Parametro di output booleano. Se impostato a True, allora il caricamento standard no...
)
{
string wc = "" // Where Clause
string oc = "" // Order By Clause
string al = "A." // Richiedo alias A.
Recordset rs = new() // This variable contains the recordset returned by the linked query
//
// Prelevo le clausole di filtro che sarebbero state usate dal QBE
this.GetQBEClauses(Collection, Parent IS Null Object, wc, oc, al)
//
this.GetQBEClauses(Null Object, Null Object, Empty String, Empty String, Empty String)
//
// Nessun criterio = criterio nullo
if wc = Empty String
{
wc := 0=0
}
//
// Carico i prodotti (solo quelli pari), passando le WHERE
select into recordset (rs)
set Id := Id
set NomeProdotto := NomeProdotto
set Idfornitore := Idfornitore
set Idcategoria := Idcategoria
set QuantitaPerUnita := QuantitaPerUnita
set PrezzoUnitario := PrezzoUnitario
set Scorte := Scorte
set QuantitaOrdinata := QuantitaOrdinata
set LivelloDiRiordino := LivelloDiRiordino
set Sospeso := Sospeso
from
Prodotti // Master Table
where
Id % C2 = ZERO
wc
//
// Metto i record dentro la collection
this.LoadCollectionFromRecordset(Collection, rs, ??)
//
Skip := True
}
// Evento notificato al documento prima di caricare una collection del suo tipo
// ****************************************************************************
event ProdottoBE.BeforeLoadCollection(
IDDocument Parent // E' il documento padre che ha chiesto il caricamento della collection. Può essere Nul...
IDCollection Collection // E' la collection da caricare.
inout boolean Skip // Parametro di output booleano. Se impostato a True, allora il caricamento standard no...
)
{
string wc = "" // Where Clause
string oc = "" // Order By Clause
string al = "A." // Richiedo alias A.
Recordset rs = new() // This variable contains the recordset returned by the linked query
//
// Prelevo le clausole di filtro che sarebbero state usate dal QBE
this.GetQBEClauses(Collection, Parent IS Null Object, wc, oc, al)
//
this.GetQBEClauses(Null Object, Null Object, Empty String, Empty String, Empty String)
//
// Nessun criterio = criterio nullo
if wc = Empty String
{
wc := 0=0
}
//
// Carico i prodotti (solo quelli pari), passando le WHERE
select into recordset (rs)
set Id := Id
set NomeProdotto := NomeProdotto
set Idfornitore := Idfornitore
set Idcategoria := Idcategoria
set QuantitaPerUnita := QuantitaPerUnita
set PrezzoUnitario := PrezzoUnitario
set Scorte := Scorte
set QuantitaOrdinata := QuantitaOrdinata
set LivelloDiRiordino := LivelloDiRiordino
set Sospeso := Sospeso
from
Prodotti // Master Table
where
Id % C2 = ZERO
wc
//
// Metto i record dentro la collection
this.LoadCollectionFromRecordset(Collection, rs, ??)
//
Skip := True
}
- Il parametro Alias può essere utilizzato per impostare l'alias dei nomi delle colonne all'interno delle clausole. Questo può avvenire solo se il documento non ha una master query, la collection non ha una query di caricamento ed infine il documento non è stato esteso da altri documenti. In tutti questi casi l'alias verrà deciso dal framework in base alla situazione e ritornato al chiamante.
- Se la procedura viene utilizzata all'interno dell'evento BeforeLoadCollection si consiglia di impostare il parametro Usa QBE all'espressione Parent Is Null Object.
Ultima modifica: 20/09/2021 / Validità: da 7.5.3400
procedura