Passa al contenuto principale

DEFQUERY

DesktopWeb
Obsoleti

Permette di inizializzare una query per la sua successiva definizione di utilizzo nelle operazioni di lettura.

La query può essere inizializzata nei seguenti modi:

  • definizione esplicita da programma
  • lettura della definizione dal file XML di rappresentazione di una query (con estensione .SXQRY o .SXRPT)
  • definizione mediante un comando SQL
note

L'utilizzo della forma contratta delle specifiche di definizione della query ('@FROM, '@JOIN, '@COLUMN, ecc...) sono ammesse soltanto in ambito di oggetto query ('@PGQUERY/'@ENDQUERY).

warning

Deve essere la prima operazione da fare per costruire una query da programma.

Parametri

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
IDQUERYLongOUTDesktopWeb
QUERYClasse BCQUERYRef31.3DesktopWeb
IDQUERYPADRELongINDesktopWeb
DESCRIZIONEStringaINDesktop
ELIMINADUPLICATIInteroINDesktopWeb
MAXRECORDLongINDesktopWeb
MULTIGRUPPOInteroINDesktopWeb
MULTISTAZIONEInteroINDesktopWeb
MULTIDOMINIOInteroINDesktopWeb
FILEStringaINDesktopWeb
BLOBBlobINDesktop
IDCOMANDOInteroINDesktopWeb
MODIFICAInteroINDesktop
DIRDIZIONARIOStringaINDesktop
VINCOLIInteroINDesktopWeb
CTEINObsoletoDesktopWeb
NOLOCKInteroINValore non necessarioDesktopWeb
ERROREInteroINDesktopWeb
NOMEStringaIN27.3DesktopWeb
OPTIONStringaIN31.4Web

IDQUERY

LongOUTOutputValore non necessarioValore non necessarioDesktopWeb

Identificatore della query restituito dalla specifica DEFQUERY

QUERY

31.3Classe BCQUERYRefReferenzaValore non necessarioValore non necessarioDesktopWeb

Identificatore della query, da usarsi nel richiamo delle successive specifiche di definizione o di esecuzione della query.

IDQUERYPADRE

LongINInputValore non necessarioValore non necessarioDesktopWeb

Indica l'identificatore della query esterna che contiene la SubQuery, da usarsi nel richiamo delle successive specifiche di definizione della SubQuery.

DESCRIZIONE

StringaINInputValore non necessarioValore non necessarioDesktop

Indica la descrizione da associare alla query.
Ha rilevanza esclusivamente documentativa.

ELIMINADUPLICATI

InteroINInputValore non necessarioValore non necessarioDesktopWeb

Indica se eliminare dal risultato della query le eventuali righe duplicate (con stessi valori su tutte le colonne).
Corrisponde all'applicazione della clausola DISTINCT al comando SQL della query.

Parametro con valori ammessi, si possono utilizzare i seguenti valori:

ValoreDescrizione
0No
1Si

MAXRECORD

LongINInputValore non necessarioValore non necessarioDesktopWeb

Definisce il numero di record da leggere dall'insieme dei record restituiti dalla query.
Corrisponde all'applicazione della clausola TOP al comando SQL della query.
Se si indica un valore 0 vengono estratti tutti i record

MULTIGRUPPO

InteroINInputValore non necessarioValore non necessarioDesktopWeb

Indica se applicare o meno il filtro automatico sul campo GR (DBGruppo) sulle tabelle di gruppo nella query.

Parametro con valori ammessi, si possono utilizzare i seguenti valori:

ValoreDescrizione
0Applica il filtro sul campo gruppo per le tabelle di gruppo
1Non applica il filtro sul campo gruppo per le tabelle di gruppo

MULTISTAZIONE

InteroINInputValore non necessarioValore non necessarioDesktopWeb

Indica se applicare o meno il filtro automatico sul campo WS (DBStazione) sulle tabelle di stazione nella query.

Parametro con valori ammessi, si possono utilizzare i seguenti valori:

ValoreDescrizione
0viene applicato il filtro sul campo stazione per le tabelle che lo prevedono
1non viene applicato il filtro sul campo stazione per le tabelle che lo prevedono (legge tutto)

MULTIDOMINIO

InteroINInputValore non necessarioValore non necessarioDesktopWeb

Indica la possibilità di accedere ai record di una tabella relativi a più domini.
Se l'attributo è omesso il meccanismo di gestione del multi-dominio non viene abilitato.

Parametro con valori ammessi, si possono utilizzare i seguenti valori:

ValoreDescrizione
0No
1Si

FILE

StringaINInputValore non necessarioValore non necessarioDesktopWeb

Indica il file XML dal quale leggere la definizione della query, precedentemente salvata attraverso la specifica @SAVEQUERY.
Il parametro deve fornire il percorso completo (cartella e nome) del file contenente la definizione della query. L'estensione predefinita per il file di definizione di una query è .SXQRY. Se non viene indicata verrà assegnata di default l'estensione .SXQRY.
È possibile indicare anche un file di definizione di un report .SXRPT. La specifica provvederà alla lettura della query definita per il report.

L'utilizzo del parametro esclude l'utilizzo dei parametri: BLOB, IDCOMANDO

BLOB

BlobINInputValore non necessarioValore non necessarioDesktop

Indica la variabile di tipo BLOB che contiene la definizione della query, precedentemente salvata con la specifica @SAVEQUERY.

L'utilizzo del parametro esclude l'utilizzo dei parametri: FILE, IDCOMANDO

IDCOMANDO

InteroINInputValore non necessarioValore non necessarioDesktopWeb

Consente la definizione della query a partire da un comando SQL definito da una precedente @DEFSQLCOMMAND.

L'utilizzo del parametro esclude l'utilizzo dei parametri: FILE, BLOB

MODIFICA

InteroINInputValore non necessarioValore non necessarioDesktop

Parametro di utilizzo interno (BCFSQL).
Indica che la query è predisposta all'aggiornamento di record. Se indicato questo parametro, è ammesso l'utilizzo del parametro ASSEGNA sulla @DEFQUERYCOLUMN.

Parametro con valori ammessi, si possono utilizzare i seguenti valori:

ValoreDescrizione
0Query di estrazione dati
1Query di modifica dati

DIRDIZIONARIO

StringaINInputValore non necessarioValore non necessarioDesktop

È un parametro di utilizzo interno (REPORTER).
Indica la direttiva di collocazione del dizionario dati.

VINCOLI

InteroINInputValore non necessarioValore non necessarioDesktopWeb

Permette di attivare la profilazione avanzata sulla query e di specificare la modalità di gestione dei record esclusi dal vincolo di profilazione della tabella.

Parametro con valori ammessi, si possono utilizzare i seguenti valori:

ValoreDescrizione
0No
1Si

CTE

INInputObsoletoObsoletoValore non necessarioValore non necessarioDesktopWeb
SottoParametri

Consente di identificare la query come common table expression.

NOLOCK

InteroINInputDesktopWeb

Indica se effettuare la lettura dei dati senza lock.
Corrisponde all'applicazione della clausola WITH (NOLOCK) su tutte le tabelle SQL presenti nella query.

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.

NOME

27.3StringaINInputValore non necessarioValore non necessarioDesktopWeb

Indica il nome della query da vedere nel BcProfiler.
Ha rilevanza esclusivamente documentativa.

OPTION

31.4StringaINInputValore non necessarioValore non necessarioWeb

Indicare con sitassi SQL l'hint da applicare alla query, in esecuzione verrà riportato al fondo della query.

Esempi

Definizione base

 '@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_DEFQUERY_IdQry"]

'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDART]

'@DEFQUERYCOLUMN IDQUERY[IdQry] _
ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDART.PREZZO AS [Prezzo]]

' Statement SQL generato
'
' SELECT CodArt AS [CodArt]
' ,DesArt AS [DesArt]
' ,Prezzo AS [Prezzo]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (DBGruppo = 'GG')

' Risultato della query
'
' CodArt DesArt Prezzo
' --------- --------------- ---------
' 001 Articolo 001 120.00
' 002 Articolo 002 134.00
' 003 Articolo 003 125.00
' 004 Articolo 004 123.00
' 005 Articolo 005 2.50
' 006 Articolo 006 2.89
' 007 Articolo 007 3.23
' 008 Articolo 008 3.10
' 009 Articolo 009 2.78
' 010 Articolo 010 3.40
' ... ... ...

Definizione con parametro ELIMINADUPLICATI

 '@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_DEFQUERY_2"] ELIMINADUPLICATI

'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDVAR]

'@DEFQUERYCOLUMN IDQUERY[IdQry] ESPR[BLDVAR.CODART AS [CodArt]] _
ESPR[BLDVAR.COSTO AS [CodCostoSTD]]

' Statement SQL generato
'
' SELECT DISTINCT CodArt AS [CodArt]
' ,CodCostoSTD AS [CodCostoSTD]
' FROM BLDVarianti AS [BLDVarianti]
' WHERE (DBGruppo = 'GG')
'
' Risultato della query | Risultato della query senza ELIMINADUPLICATI
' |
' CodArt CodCostoSTD | CodArt CodCostoSTD
' --------- -------------- | --------- --------------
' 001 22.000000 | 001 22.000000
' 001 23.000000 | 001 23.000000
' 001 25.000000 | 001 25.000000
' 005 23.670000 | 005 23.670000
' 018 0.000000 | 018 0.000000
' MAT1 2.000000 | 018 0.000000
' MAT1 3.000000 | 018 0.000000
' | MAT1 2.000000
' | MAT1 3.000000

Definizione con parametro MAXRECORD

 '@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_DEFQUERY_2"] MAXRECORD[5]

'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDART]

'@DEFQUERYCOLUMN IDQUERY[IdQry] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]]

' Statement SQL generato
'
' SELECT TOP 5 CodArt AS [CodArt]
' ,DesArt AS [DesArt]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (DBGruppo = 'GG')
'
' Risultato della query | Risultato della query senza MAXRECORD[]
' |
' CodArt DesArt | CodArt DesArt
' --------- --------------- | --------- ---------------
' 001 Articolo 001 | 001 Articolo 001
' 002 Articolo 002 | 002 Articolo 002
' 003 Articolo 003 | 003 Articolo 003
' 004 Articolo 004 | 004 Articolo 004
' 005 Articolo 005 | 005 Articolo 005
' | 006 Articolo 006
' | 007 Articolo 007
' | 008 Articolo 008
' | 009 Articolo 009
' | 010 Articolo 010
' | ... ...

Definizione con parametro MULTIGRUPPO

 '@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_DEFQUERY_2"]

'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDART]

'@DEFQUERYCOLUMN IDQUERY[IdQry] ESPR[BLDART.*GR* AS [GrupArt]] _
ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]]

'@DEFQUERYWHERE IDQUERY[IdQry] ESPR[INLIST(BLDART.*GR*,"GG,CC") > 0]

' Statement SQL generato | Statement SQL generato senza MULTIGRUPPO[]
' |
' SELECT DBGruppo AS [GrupArt] | SELECT DBGruppo AS [GrupArt]
' ,CodArt AS [CodArt] | ,CodArt AS [CodArt]
' ,DesArt AS [DesArt] | ,DesArt AS [DesArt]
' FROM BLDArticoli AS [BLDArticoli] | FROM BLDArticoli AS [BLDArticoli]
' WHERE ( | WHERE (
' DBGruppo IN ( | (
' 'GG' | DBGruppo IN (
' ,'CC' | 'GG'
' ) | ,'CC'
' ) | )
' | )
' | )
' | AND (DBGruppo = 'GG')
' |
' Risultato della query | Risultato della query senza MULTIGRUPPO[]
' |
' GrupArt CodArt DesArt | GrupArt CodArt DesArt
' --------- --------- --------------- | --------- --------- ---------------
' ... |
' CC 024 Articolo 024 | GG 001 Articolo 001
' CC 025 Articolo 025 | GG 002 Articolo 002
' CC 026 Articolo 026 | GG 003 Articolo 003
' CC 027 Articolo 027 | GG 004 Articolo 004
' CC 028 Articolo 028 | GG 005 Articolo 005
' GG 001 Articolo 001 | GG 010 Articolo 006
' GG 002 Articolo 002 | GG 011 Articolo 007
' GG 003 Articolo 003 | GG 012 Articolo 008
' GG 004 Articolo 004 | GG 013 Articolo 009
' GG 005 Articolo 005 | GG 014 Articolo 010
' ... | ...

Definizione con comando SQL parametrico

 DIM commandId[INT]

DIM families[CLASSE[BLD_FAMIGLIA] COLLEZIONE]
families.Clear()

DIM MAXRECORD[INT] = 10

' Le variabili inserite in BCVIN[] e BCVOUT[] devono avere il nome tutto in maiuscolo
DIM SQLCommand[STRING]="SELECT TOP (BCVIN[MAXRECORD]) BLDFamiglie.CodFamiglia AS [CodFamiglia], BLDFamiglie.DesFamiglia AS [DesFamiglia] FROM BLDFamiglie WHERE BLDFamiglie.DBGruppo = 'GG'"

'@DEFSQLCOMMAND IDCOMANDO[commandId] COMANDO[SQLCommand]

'@DEFQUERY IDQUERY[IdQry] IDCOMANDO[commandId] NOME["BCRIF_DEFQUERY_11"]

' Statement SQL generato
'
' SELECT TOP (10) BLDFamiglie.CodFamiglia AS [CodFamiglia]
' ,BLDFamiglie.DesFamiglia AS [DesFamiglia]
' FROM BLDFamiglie
' WHERE BLDFamiglie.DBGruppo = 'GG'
'
' Risultato della query
'
' CodFamiglia DesFamiglia
' -------------- --------------
' 01 Famiglia 01
' 02 Famiglia 02
' 03 Famiglia 03
' 04 Famiglia 04
' 05 Famiglia 05
' 06 Famiglia 06
' 07 Famiglia 07
' 08 Famiglia 08
' 09 Famiglia 09

Definizione base con oggetto query

 '@DEFQUERY QUERY[Query] NOME["BCRIFQRY_ART_DEFINIZIONE_Query"]

'@FROM TABELLA[BLDART]

'@COLUMN ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDART.PREZZO AS [Prezzo]]

'@ENDQUERY

' Statement SQL generato
'
' SELECT CodArt AS [CodArt]
' ,DesArt AS [DesArt]
' ,Prezzo AS [Prezzo]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (DBGruppo = 'GG')

' Risultato della query
'
' CodArt DesArt Prezzo
' --------- --------------- ---------
' 001 Articolo 001 120.00
' 002 Articolo 002 134.00
' 003 Articolo 003 125.00
' 004 Articolo 004 123.00
' 005 Articolo 005 2.50
' 006 Articolo 006 2.89
' 007 Articolo 007 3.23
' 008 Articolo 008 3.10
' 009 Articolo 009 2.78
' 010 Articolo 010 3.40
' ... ... ...

Riferimenti

Le query in BC
Le subquery in BC
Le common table expressions (CTEs) in BC