DEFQUERYCOMPUTEDCOLUMN
Permette la definizione di campi calcolati.
Un campo calcolato è un campo che non è presente fisicamente sulle tabelle oggetto dalla query ma è il risultato di una elaborazione (mediante una formula, eventualmente condizionata) sui campi delle tabelle. Un campo calcolato può essere anche una costante numerica o alfanumerica.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| IDQUERY | Long | ||||
| ESPR | |||||
| FORMULA | 31.2 | ||||
| ETICHETTA | Stringa | 33.1 | |||
| ERRORE | Intero |
IDQUERY
Identificatore della query ottenuto tramite @DEFQUERY.
ESPR
Valore costante, formula, formula condizionata per la definizione del campo calcolato, identificativo della subquery (o sottoquery) o funzione di controllo esistenza record.
FORMULA
Definisce la formula che determina il campo calcolato.
ETICHETTA
Consente di definire l'etichetta da visualizzare per la QUERYCOMPUTEDCOLUMN.
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
DIM idQuery[INT]
'@DEFQUERY IDQUERY[idQuery] NOME["BCRIF_DEFQUERYCOLUMN_2"]
'@DEFQUERYFROM IDQUERY[idQuery] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[idQuery] TABELLA[BLDMARCA] TABELLAPADRE[BLDART] _
REL[BLDMARCA.COD = BLDART.CODMARCA] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[idQuery] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDMARCA.DES AS [DesMarca]]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idQuery] ESPR[20 AS [QuantitaDaAcquistare] FMT[NUMERICO[2]]]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idQuery] ESPR[If BLDMARCA.DES = "Marca 01" Then (BLDART.PREZZO / 100 * (100-BLDART.SCONTO) ) * BLDART.QUA _
ElseIf BLDMARCA.DES = "Marca 02" Then (BLDART.PREZZO / 100 * (100 - (BLDART.SCONTO * 2) ) ) * BLDART.QUA _
Else BLDART.PREZZO * BLDART.QUA AS [PrezzoTotale] FMT[NUMERICO[6,2]]]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idQuery] ESPR[If BLDART.QUA < [QuantitaDaAcquistare] Then "No" _
Else "Si" AS [QuantitaSufficiente] FMT[TESTO[2]]]
'@DEFQUERYORDERBY IDQUERY[idQuery] ESPR[BLDART.COD]
' Statement SQL generato
'
' SELECT BLDArticoli.CodArt AS [CodArt]
' ,BLDArticoli.DesArt AS [DesArt]
' ,BLDMarche.DesMarca AS [DesMarca]
' ,20 AS [QuantitaDaAcquistare]
' ,CASE
' WHEN BLDMarche.DesMarca = 'Marca 01'
' THEN (BLDArticoli.Prezzo / 100 * (100 - BLDArticoli.Sconto)) * BLDArticoli.MagQuantita
' WHEN BLDMarche.DesMarca = 'Marca 02'
' THEN (BLDArticoli.Prezzo / 100 * (100 - (BLDArticoli.Sconto * 2))) * BLDArticoli.MagQuantita
' ELSE BLDArticoli.Prezzo * BLDArticoli.MagQuantita
' END AS [PrezzoTotale]
' ,CASE
' WHEN BLDArticoli.MagQuantita < (20)
' THEN 'No'
' ELSE 'Si'
' END AS [QuantitaSufficiente]
' FROM BLDArticoli AS [BLDArticoli]
' INNER JOIN BLDMarche AS [BLDMarche] ON (
' BLDMarche.CodMarca = BLDArticoli.CodMarca
' AND (BLDMarche.DBGruppo = BLDArticoli.DBGruppo)
' )
' WHERE (BLDArticoli.DBGruppo = 'GG')
' ORDER BY [CodArt] ASC
'
' Risultato della query
'
' CodArt DesArt DesMarca QuantitaDaAcquistare PrezzoTotale QuantitaSufficiente
' --------- --------------- ----------- ----------------------- --------------- ----------------------
' 001 Articolo 001 Marca 01 20 7113.600000 Si
' 002 Articolo 002 Marca 02 20 5595.840000 Si
' 003 Articolo 003 Marca 03 20 10125.000000 Si
' 004 Articolo 004 Marca 04 20 9717.000000 Si
' 005 Articolo 005 Marca 01 20 2.500000 No
' 006 Articolo 006 Marca 02 20 2.890000 No
' 007 Articolo 007 Marca 03 20 6.460000 No
' 008 Articolo 008 Marca 04 20 6.200000 No
' 009 Articolo 009 Marca 01 20 2.780000 No
' ...