DEFQUERYSESSIONTABLE
Permette di definire e popolare una tabella di sessione da utilizzare nella query come una 'normale' tabella.
E' possibile popolare la tabella di sessione mediante:
- variabile blob, con i record separati da virgola
- variabile stringa, con i record separati da virgola
- struttura dinamica
- collezione di classi
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| IDQUERY | Long | ||||
| NOME | Stringa | ||||
| VALORI | Blob | ||||
| TESTO | Stringa | 30.7 | |||
| FMT | Stringa | ||||
| COLLEZIONE | Collezione | ||||
| STRUTTURA | Stringa |
IDQUERY
Identificatore della query ottenuto tramite @DEFQUERY.
NOME
Nome che identifica tabella di sessione.
VALORI
Elenco di valori in formato stringa con cui popolare la tabella.
I tipo di dato effettivo è specificato mediante il formato indicato nel parametro FMT.
L'utilizzo del parametro implica l'utilizzo del parametro FMT
TESTO
Elenco di valori in formato stringa con cui popolare la tabella.
I tipo di dato effettivo è specificato mediante il formato indicato nel parametro FMT.
L'utilizzo del parametro implica l'utilizzo del parametro FMT
FMT
Definisce il tipo di dato contenuto nella variabile indicata nei parametri VALORI o TESTO.
COLLEZIONE
Collezione di classi con cui popolare la tabella.
La tabella di sessione avrà tante colonne quante sono i campi della classe, con i tipi corrispondenti. I nomi delle colonne della tabella sono omonimi ai campi della classe.
Il nome del campo deve essere scritto in maiuscolo per essere riconosciuto correttamente dal motore SQL.
STRUTTURA
Struttura dinamica con cui popolare la tabella di sessione.
La tabella di sessione avrà tanti campi quanti sono quelli della struttura dinamica, con i tipi corrispondenti. I nomi delle colonne della tabella sono omonimi ai campi della struttura dinamica.
Il nome del campo deve essere scritto in maiuscolo per essere riconosciuto correttamente dal motore SQL.
Esempi
Definizione con parametro VALORI
DIM QueryObject[INT]
DIM selectedFamCodes[BLOB] = "01,02,03"
'@DEFQUERY IDQUERY[QueryObject] NOME["BCRIF_DEFQUERYSESSIONTABLE_3"]
'@DEFQUERYSESSIONTABLE IDQUERY[QueryObject] NOME["SelectedFamCodes"] _
VALORI[selectedFamCodes] _
FMT[TESTO[6]]
'@DEFQUERYFROM IDQUERY[QueryObject] TABELLA[BLDFAMIGLIA]
'@DEFQUERYCOLUMN IDQUERY[QueryObject] ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]] _
ESPR[BLDFAMIGLIA.DES AS [DesFamiglia]]
'@DEFQUERYWHERE IDQUERY[QueryObject] ESPR[[CodFamiglia] IN (TAB(SelectedFamCodes))]
Definizione con parametro STRUTTURA
DIM QueryObject[INT]
'@DEFDYNSTRUCT STRUTTURA["SelectedFamiliesStruct"] CAMPI[Codice$[20], Descrizione$[100]]
PopulateStruct()
'@DEFQUERY IDQUERY[QueryObject] NOME["BCRIF_DEFQUERYSESSIONTABLE_7"]
'@DEFQUERYSESSIONTABLE IDQUERY[QueryObject] NOME["SelectedFamilies"] _
STRUTTURA["SelectedFamiliesStruct"]
'@DEFQUERYFROM IDQUERY[QueryObject] TABELLA[BLDFAMIGLIA]
'@DEFQUERYJOIN IDQUERY[QueryObject] TABELLA[[Selezionati]] TABELLAPADRE[BLDFAMIGLIA] _
REL[[Selezionati].CODICE=BLDFAMIGLIA.COD] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[QueryObject] ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]] _
ESPR[BLDFAMIGLIA.DES AS [DesFamiglia]] _
ESPR[[Selezionati].DESCRIZIONE AS[NuovaDescrizione]]
Definizione con parametro COLLEZIONE
DIM QueryObject[INT]
DIM families[CLASSE[BLD_FAMIGLIA] COLLEZIONE]
PopulateCollection()
'@DEFQUERY IDQUERY[QueryObject] NOME["BCRIF_DEFQUERYSESSIONTABLE_7"]
'@DEFQUERYSESSIONTABLE IDQUERY[QueryObject] NOME["newFamilies"] COLLEZIONE[families]
'@DEFQUERYFROM IDQUERY[QueryObject] TABELLA[BLDFAMIGLIA]
'@DEFQUERYJOIN IDQUERY[QueryObject] TABELLA[[NewFamilies]] TABELLAPADRE[BLDFAMIGLIA] _
REL[[NewFamilies].CODICE=BLDFAMIGLIA.COD] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[QueryObject] ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]] _
ESPR[BLDFAMIGLIA.DES AS [DesFamiglia]] _
ESPR[[NewFamilies].DESCRIZIONE AS[NuovaDescrizione]]
Definizione per autocompletamento
DIM QueryObject[INT]
DIM clients[CLASSE[BLD_CLIFOR] COLLEZIONE]
DIM tmpClient[CLASSE[BLD_CLIFOR]]
tmpClient.Clear(): tmpClient.CodCliFor = 1: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 1": clients.Add(tmpClient)
tmpClient.Clear(): tmpClient.CodCliFor = 2: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 2": clients.Add(tmpClient)
tmpClient.Clear(): tmpClient.CodCliFor = 3: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 3": clients.Add(tmpClient)
tmpClient.Clear(): tmpClient.CodCliFor = 4: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 4": clients.Add(tmpClient)
tmpClient.Clear(): tmpClient.CodCliFor = 5: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 5": clients.Add(tmpClient)
tmpClient.Clear(): tmpClient.CodCliFor = 6: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 6": clients.Add(tmpClient)
'@DEFQUERY IDQUERY[QueryObject] NOME["BCRIF_DEFQUERYSESSIONTABLE_12"]
'@DEFQUERYSESSIONTABLE IDQUERY[QueryObject] NOME["Clients"] COLLEZIONE[clients]
'@DEFQUERYFROM IDQUERY[QueryObject] TABELLA[[Clients]]
'@DEFQUERYCOLUMN IDQUERY[QueryObject] ESPR[[Clients].COD AS [VAR]] ETICHETTA["Codice"] _
ESPR[[Clients].RS1 AS [RagioneSociale]] ETICHETTA["Ragione Sociale"]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[QueryObject] ESPR[STR$([VAR]) + " - " + [RagioneSociale] AS [VARVIDEO] FMT[TESTO[50]]]
'@DEFQUERYWHERE IDQUERY[QueryObject] ESPR[MATCH([VAR], "%#TD%") > 0 Or MATCH([VARVIDEO], "%#TD%") > 0]
'Modifica della collezione di partenza
tmpClient.Clear(): tmpClient.CodCliFor = 7: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 7": clients.Add(tmpClient)
tmpClient.Clear(): tmpClient.CodCliFor = 8: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 8": clients.Add(tmpClient)
tmpClient.Clear(): tmpClient.CodCliFor = 9: tmpClient.TipoAnagrafica = 0: tmpClient.RagioneSociale1 = "Cliente 9": clients.Add(tmpClient)
SameQueryRedefinition()
'@SETEDIT IDCONTROLLO["EditId"] AUTOCOMPLETAMENTO[IDQUERY[QueryObject]]
Definizione per utilizzo con CTE
DIM QueryObject[INT]
DIM cteVarQueryObject[INT]
DIM cteArtQueryObject[INT]
DIM SelectedItems[BLOB] = "001,018"
'@DEFQUERY IDQUERY[QueryObject] NOME["TEST_DEFQUERYCTE_5"]
'@DEFQUERYSESSIONTABLE IDQUERY[QueryObject] NOME["SelectedItemsTab"] VALORI[SelectedItems] FMT[TESTO[6]]
' Definizione della query principale
'@DEFQUERYFROM IDQUERY[QueryObject] TABELLA[[Articoli]]
'@DEFQUERYCOLUMN IDQUERY[QueryObject] ESPR[[Articoli].DesArtA AS [DesArticolo]] _
ESPR[[Articoli].PrezzoA AS [Prezzo]] _
ESPR[[Articoli].DesVarianteA AS [DesVariante]] _
ESPR[[Articoli].CodCostoSTDA AS [CostoVariante]]
' Definizione della query cte per la tabella BLDVAR
'@DEFQUERYCTE IDQUERY[cteVarQueryObject] IDQUERYPADRE[QueryObject] ALIAS["Varianti"]
'@DEFQUERYFROM IDQUERY[cteVarQueryObject] TABELLA[BLDVAR]
'@DEFQUERYCOLUMN IDQUERY[cteVarQueryObject] ESPR[BLDVAR.DES AS [DesVarianteV]] _
ESPR[BLDVAR.CODART AS [CodArtV]] _
ESPR[BLDVAR.COSTO AS [CodCostoSTDV]]
' Definizione della subquery per la tabella BLDRIGA
'@DEFQUERYCTE IDQUERY[cteArtQueryObject] IDQUERYPADRE[QueryObject] ALIAS["Articoli"]
'@DEFQUERYFROM IDQUERY[cteArtQueryObject] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[cteArtQueryObject] TABELLA[[Varianti]] TABELLAPADRE[BLDART] _
REL[[Varianti].CodArtV = BLDART.COD] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[cteArtQueryObject] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArtA]] _
ESPR[BLDART.PREZZO AS [PrezzoA]] _
ESPR[[Varianti].DesVarianteV AS [DesVarianteA]] _
ESPR[[Varianti].CodCostoSTDV AS [CodCostoSTDA]]
'@DEFQUERYWHERE IDQUERY[cteArtQueryObject] ESPR[[CodArt] IN (TAB(SelectedItemsTab))]