DEFQUERYWHERE
Permette di definire le condizioni di filtro da applicare alla query.
Tramite questa funzione è possibile definire sia il filtro sulla query (clausola WHERE) che il filtro sul raggruppamento della query (clausola HAVING), se presente.
È possibile raggruppare tutte le condizioni di filtro relative alla query in una sola definizione.
Se è necessario definire anche le condizioni di filtro per raggruppamenti, le '@DEFQUERYWHERE dovranno diventare due:
- una per le condizioni di filtro per la query: si usa il parametro ESPR[] ed il risultato finisce nella clausola WHERE
- l'altra per le condizioni di filtro sul raggruppamento: si usa il parametro ESPRHAVING[] ed il risultato finisce nella clausola HAVING.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| IDQUERY | Long | ||||
| ESPR | |||||
| ESPRHAVING | |||||
| IDESPR | Stringa | ||||
| ERRORE | Intero |
IDQUERY
Identificatore della query ottenuto tramite @DEFQUERY.
L'utilizzo del parametro esclude l'utilizzo del parametro QUERY
ESPR
Dichiarazione della condizione, all'interno dell'espressione è possibile utilizzare una subquery (o sottoquery).
L'utilizzo del parametro esclude l'utilizzo del parametro ESPRHAVING
ESPRHAVING
Dichiarazione della condizione per il raggruppamento.
IDESPR
Dichiarazione dell'identificatore dell'espressione.
Se non specificato e se la condizione è semplice, si assume come identificatore il primo campo dell'espressione. L'espressione è semplice quando prevede un campo, un operatore di confronto e un valore da testare (o due a seconda dell'operatore di confronto).
ERRORE
Consente al programma di intercettare e gestire l'errore restituito dalla funzione.
Utilizzare uno dei metodi GetLastError*() della classe BCContextInfo per ottenere le informazioni dell'errore.
Esempi
Definizione
'@DEFQUERY IDQUERY[idQry] NOME["BCRIF_DEFQUERYWHERE_2"]
'@DEFQUERYFROM IDQUERY[idQry] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[idQry] TABELLA[BLDMARCA] TABELLAPADRE[BLDART] _
REL[BLDMARCA.COD = BLDART.CODMARCA] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[idQry] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDMARCA.DES AS [DesMarca]]
'@DEFQUERYWHERE IDQUERY[idQry] ESPR[BLDMARCA.DES = "Marca 01"]
'@DEFQUERYORDERBY IDQUERY[idQry] ESPR[BLDART.COD]
' Statement SQL generato
'
' SELECT BLDArticoli.CodArt AS [CodArt]
' ,BLDArticoli.DesArt AS [DesArt]
' ,BLDMarche.DesMarca AS [DesMarca]
' FROM BLDArticoli AS [BLDArticoli]
' INNER JOIN BLDMarche AS [BLDMarche] ON (
' BLDMarche.CodMarca = BLDArticoli.CodMarca
' AND (BLDMarche.DBGruppo = BLDArticoli.DBGruppo)
' )
' WHERE ((BLDMarche.DesMarca = 'Marca 01'))
' AND (BLDArticoli.DBGruppo = 'GG')
' ORDER BY [CodArt] ASC
'
' Risultato della query
'
' CodArt DesArt DesMarca
' --------- --------------- -----------
' 001 Articolo 001 Marca 01
' 005 Articolo 005 Marca 01
' 009 Articolo 009 Marca 01
' 013 Articolo 013 Marca 01
' 017 Articolo 017 Marca 01
' 021 Articolo 021 Marca 01
Definizione con Condizionamento multiplo
'@DEFQUERY IDQUERY[idQry] NOME["BCRIF_DEFQUERYWHERE_2"]
'@DEFQUERYFROM IDQUERY[idQry] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[idQry] TABELLA[BLDMARCA] TABELLAPADRE[BLDART] _
REL[BLDMARCA.COD = BLDART.CODMARCA] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[idQry] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDMARCA.DES AS [DesMarca]]
'@DEFQUERYWHERE IDQUERY[idQry] ESPR[BLDMARCA.DES = "Marca 01"] _
ESPR[BLDART.PREZZO > 10]
'@DEFQUERYORDERBY IDQUERY[idQry] ESPR[BLDART.COD]
' Statement SQL generato
'
' SELECT BLDArticoli.CodArt AS [CodArt]
' ,BLDArticoli.DesArt AS [DesArt]
' ,BLDMarche.DesMarca AS [DesMarca]
' FROM BLDArticoli AS [BLDArticoli]
' INNER JOIN BLDMarche AS [BLDMarche] ON (
' BLDMarche.CodMarca = BLDArticoli.CodMarca
' AND (BLDMarche.DBGruppo = BLDArticoli.DBGruppo)
' )
' WHERE (
' (BLDMarche.DesMarca = 'Marca 01')
' AND (BLDArticoli.Prezzo > 10.00)
' )
' AND (BLDArticoli.DBGruppo = 'GG')
' ORDER BY [CodArt] ASC
'
' Risultato della query
'
' CodArt DesArt DesMarca
' --------- --------------- -----------
' 001 Articolo 001 Marca 01
' 013 Articolo 013 Marca 01
' 021 Articolo 021 Marca 01
Definizione con condizionamento sui raggruppamenti
'@DEFQUERY IDQUERY[idQry] NOME["BCRIF_DEFQUERYWHERE_2"]
'@DEFQUERYFROM IDQUERY[idQry] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[idQry] TABELLA[BLDFAMIGLIA] TABELLAPADRE[BLDART] _
REL[BLDFAMIGLIA.COD = BLDART.CODFAM] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[idQry] ESPR[AVG(BLDART.PREZZO) AS [PrezzoMedio]] _
ESPR[COUNT(BLDART.COD) AS [NumeroArticoli]] _
ESPR[GROUPBY(BLDFAMIGLIA.COD) AS [CodFamiglia]] _
ESPR[GROUPBY(BLDFAMIGLIA.DES) AS [DesFamiglia]]
'@DEFQUERYWHERE IDQUERY[idQry] ESPRHAVING[[NumeroArticoli] >= 5]
' Statement SQL generato
'
' SELECT AVG(BLDArticoli.Prezzo) AS [PrezzoMedio]
' ,COUNT(BLDArticoli.CodArt) AS [NumeroArticoli]
' ,BLDFamiglie.CodFamiglia AS [CodFamiglia]
' ,BLDFamiglie.DesFamiglia AS [DesFamiglia]
' FROM BLDArticoli AS [BLDArticoli]
' INNER JOIN BLDFamiglie AS [BLDFamiglie] ON (
' BLDFamiglie.CodFamiglia = BLDArticoli.CodFamiglia
' AND (BLDFamiglie.DBGruppo = BLDArticoli.DBGruppo)
' )
' WHERE (BLDArticoli.DBGruppo = 'GG')
' GROUP BY BLDFamiglie.CodFamiglia
' ,BLDFamiglie.DesFamiglia
' HAVING (COUNT((BLDArticoli.CodArt)) >= 5)
'
' Risultato della query
'
' PrezzoMedio NumeroArticoli CodFamiglia DesFamiglia
' -------------- ----------------- -------------- --------------
' 54.890000 7 01 Famiglia 01
' 47.470000 5 02 Famiglia 02
' 36.756000 5 03 Famiglia 03
' 38.561250 8 05 Famiglia 05