Passa al contenuto principale

DEFQUERYCOMPUTEDCOLUMN

AliasCOMPUTEDCOLUMN31.1DesktopWeb

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

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
IDQUERYLongINDesktopWeb
ESPRINRipetibileDesktopWeb
FORMULAIN31.2Desktop
ETICHETTAStringaIN33.1DesktopWeb
ERROREInteroINDesktopWeb

IDQUERY

LongINInputValore non necessarioValore non necessarioDesktopWeb

Identificatore della query ottenuto tramite @DEFQUERY.

ESPR

INInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb
SottoParametri

Valore costante, formula, formula condizionata per la definizione del campo calcolato, identificativo della subquery (o sottoquery) o funzione di controllo esistenza record.

FORMULA

31.2INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Definisce la formula che determina il campo calcolato.

ETICHETTA

33.1StringaINInputValore non necessarioValore non necessarioDesktopWeb

Consente di definire l'etichetta da visualizzare per la QUERYCOMPUTEDCOLUMN.

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

 
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
' ...