Passa al contenuto principale

DEFQUERYTABLESERVICE

AliasTABLESERVICEDesktopWeb

Permette di definire una query inserendo al suo interno la definizione di tabelle effettuate in un altro programma o sub esterna.

Tramite questa specifica è possibile disegnare una query, con una definizione frammentata su diversi programmi appartenenti anche a prodotti diversi, per poi completarne la sua definizione con l'introduzione di eventuali relazioni (JOIN). Si definisce una '@DEFQUERYTABLESERVICE poi le successive '@DEFQUERYTABLE relative alle tabelle in relazione e così via.

suggerimento

Se ne sconsiglia l'utilizzo all'interno dello stesso prodotto dove lo sviluppo è proprietario delle tabelle coinvolte, mentre è indispensabile allo sviluppo per definire query con tabelle proprietarie di altri gruppi di sviluppo. L'utilizzo della funzione, deve seguire, nell'ordine di definizione, la specifica '@DEFQUERY.

Parametri

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
IDQUERYLongINDesktopWeb
FIGLIOINObbligatorioDesktopWeb
PADREINDesktopWeb
RELINDesktopWeb
OBBLIGATORIAInteroINDesktop
OPERATOREJOINStringaINDesktopWeb
NOMERELAZIONEStringaINDesktop
VINCOLIINDesktopWeb
TABELLAINDesktop
TABELLAPADREINDesktop
TABELLAFIGLIOINDesktop
ERROREInteroINDesktopWeb

IDQUERY

LongINInputValore non necessarioValore non necessarioDesktopWeb

Identificatore della query ottenuto tramite @DEFQUERY.

FIGLIO

INInputObbligatorioObbligatorioValore non necessarioValore non necessarioDesktopWeb
SottoParametri

[IDQueryService] Identificativo della query, identifica la query esterna da inserire.. Se è la prima tabella inserita nella query, il parametro FIGLIO assume la valenza di tabella principale della query. IDQueryService: variabile di tipo LONG. [AliasQueryService] Alias da assegnare alla query esterna da utilizzare per riferirsi nel codice BC. AliasQueryService: può essere una variabile di tipo stringa od una costante tra doppi apici.

PADRE

INInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

[DefinizioneTabella] Identifica la tabella padre alla quale viene aggiunta, in relazione, la tabella definita dal parametro FIGLIO.

REL

INInputValore non necessarioValore non necessarioDesktopWeb

[Relazione] La presenza del parametro REL definisce la relazione, in termini di uguaglianza dei campi, tra la tabella indicata in FIGLIO[] e la tabella indicata in PADRE[]. Integra la funzionalità della specifica '@DEFQUERYREL. Il parametro REL è opzionale se:

  • è indicata la relazione mediante la specifica '@DEFQUERYREL
  • se non è indicato il parametro PADRE. Diversamente è obbligatorio.

OBBLIGATORIA

InteroINInputValore non necessarioValore non necessarioDesktop

[FlagRelObb] Identifica se la relazione di esistenza del record è obbligatoria (non sono ammessi valori nulli): corrisponde all'applicazione della clausola INNER JOIN tra le due tabelle oggetto della relazione. Il default per la relazione è opzionale (ovvero di documentazione): corrisponde all'applicazione della clausola LEFT OUTER JOIN tra le due tabelle oggetto della relazione. Se è indicato anche il parametro OPERATOREJOIN, viene restituito errore in traduzione, in quanto il parametro OBBLIGATORIA corrisponde a OPERATOREJOIN[INNER]. Per questo motivo, il parametro OBBLIGATORIA è da considerarsi deprecato e sostituibile con OPERATOREJOIN[INNER], tranne nei casi in cui FlagRelObb sia una variabile di tipo numerico e non la costante '1' (uno). Argomento valido solamente se presente il parametro REL. FlagRelObb: variabile di tipo numerico. <tabella> Valore Descrizione 0 Relazione opzionale (LEFT OUTER JOIN) 1 Relazione obbligatoria (INNER JOIN) </tabella>

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

ValoreDescrizione
0Relazione opzionale (LEFT OUTER JOIN)
1Relazione obbligatoria (INNER JOIN)

OPERATOREJOIN

StringaINInputValore non necessarioValore non necessarioDesktopWeb

[OperatoreJoin] Indica il tipo di JOIN, tra i valori INNER, JOIN, LEFT, RIGHT, FULL e CROSS, da applicare alle tabelle in relazione. OperatoreJoin: Variabile di tipo stringa o costante tra doppi apici. Argomento valido solamente se presente il parametro REL.

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

ValoreDescrizione
INNERDefinizione operatore INNER JOIN
JOINDefinizione operatore INNER JOIN
LEFTDefinizione operatore LEFT OUTER JOIN
RIGHTDefinizione operatore RIGHT OUTER JOIN
FULLDefinizione operatore FULL OUTER JOIN
CROSSDefinizione operatore CROSS JOIN (utilizzabile solo su @DEFQUERYTABLE)

NOMERELAZIONE

StringaINInputValore non necessarioValore non necessarioDesktop

[NomeRelazione] Nome della relazione (codice) derivato dall'elenco relazioni previste per la tabella. Il nome della relazione è visibile in gestione descrittori o nel programma di visualizzazione dello schema del dizionario dati (BCVSQLW). Se non indicato la relazione deve essere esplicitata mediante i parametri PADRE, FIGLIO e REL. NomeRelazione: può essere una variabile di tipo stringa od una costante tra doppi apici.

VINCOLI

INInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

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

TABELLA

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Nome del DFX da cui reperire le caratteristiche della tabella.

TABELLAPADRE

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Nome del DFX da cui reperire le caratteristiche della tabella.

TABELLAFIGLIO

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Nome del DFX da cui reperire le caratteristiche della tabella.

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 QueryObject[INT]
DIM serviceQueryObject[INT]

'@DEFQUERY IDQUERY[QueryObject] NOME["BCRIF_DEFQUERYTABLESERVICE_8"]

'@DEFQUERY IDQUERY[serviceQueryObject] NOME["EXTERNALQUERYDEFINITION_2"]

' Definizione della query in un sorgente esterno
' ExternalQueryDefinition(serviceQueryObject)

'@DEFQUERYTABLESERVICE IDQUERY[QueryObject] FIGLIO[QUERYSERVICE[serviceQueryObject] ALIAS["ARTICOLI"]]

'@DEFQUERYJOIN IDQUERY[QueryObject] TABELLA[BLDMARCA] TABELLAPADRE[[ARTICOLI]] _
REL[BLDMARCA.COD = [ARTICOLI].CodMarca] _
OPERATOREJOIN["INNER"]

'@DEFQUERYCOLUMN IDQUERY[QueryObject] ESPR[[ARTICOLI].CodArt AS [CodArt]] _
ESPR[[ARTICOLI].DesArt AS [DesArt]] _
ESPR[BLDMARCA.DES AS [DesMarca]]

'@DEFQUERYWHERE IDQUERY[QueryObject] ESPR[BLDMARCA.COD = "01"]

Definizione con parametro PADRE

 DIM QueryObject[INT]
DIM serviceQueryObject[INT]

'@DEFQUERY IDQUERY[QueryObject] NOME["BCRIF_DEFQUERYTABLESERVICE_8"]

'@DEFQUERY IDQUERY[serviceQueryObject] NOME["EXTERNALQUERYDEFINITION_2"]

' Definizione della query in un sorgente esterno
' ExternalQueryDefinition(serviceQueryObject)

'@DEFQUERYFROM IDQUERY[QueryObject] TABELLA[BLDMARCA]

'@DEFQUERYTABLESERVICE IDQUERY[QueryObject] FIGLIO[QUERYSERVICE[serviceQueryObject] ALIAS["ARTICOLI"]] _
PADRE[BLDMARCA] REL[[ARTICOLI].CodMarca = BLDMARCA.COD]

'@DEFQUERYJOIN IDQUERY[QueryObject] TABELLA[BLDFAMIGLIA] TABELLAPADRE[[ARTICOLI]] _
REL[BLDFAMIGLIA.COD = [ARTICOLI].CodFamiglia] _
OPERATOREJOIN["INNER"]

'@DEFQUERYCOLUMN IDQUERY[QueryObject] ESPR[[ARTICOLI].CodArt AS [CodArt]] _
ESPR[[ARTICOLI].DesArt AS [DesArt]] _
ESPR[BLDMARCA.DES AS [DesMarca]] _
ESPR[BLDFAMIGLIA.DES AS [DesFamiglia]]

'@DEFQUERYWHERE IDQUERY[QueryObject] ESPR[[ARTICOLI].CodArt > "010" And [ARTICOLI].CodArt < "021"]