Passa al contenuto principale

DEFQUERYWHERE

AliasWHERE31.1DesktopWeb

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.

suggerimento

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

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
IDQUERYLongINDesktopWeb
ESPRINRipetibileDesktopWeb
ESPRHAVINGINRipetibileDesktopWeb
IDESPRStringaINRipetibileDesktopWeb
ERROREInteroINDesktopWeb

IDQUERY

LongINInputValore non necessarioValore non necessarioDesktopWeb

Identificatore della query ottenuto tramite @DEFQUERY.

L'utilizzo del parametro esclude l'utilizzo del parametro QUERY

ESPR

INInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

Dichiarazione della condizione, all'interno dell'espressione è possibile utilizzare una subquery (o sottoquery).

L'utilizzo del parametro esclude l'utilizzo del parametro ESPRHAVING

ESPRHAVING

INInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

Dichiarazione della condizione per il raggruppamento.

IDESPR

StringaINInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

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

InteroINInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

Consente al programma di intercettare e gestire l'errore restituito dalla funzione.

suggerimento

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