GETQUERYDATA
Permette di eseguire la lettura dei dati sul Database di riferimento utilizzando la query precedentemente definita mediante@DEFQUERY.
Le attività compiute dalla specifica sono:
- se viene eseguito il posizionamento, le variabili di programma associate ai parametri della query (mediante l'uso delle specifiche @DEFQUERYPARAM, @BINDQUERYPARAM) sono lette ed utilizzate per l'interrogazione della base dati
- i dati letti sono restituiti, riga per riga, nelle variabili di programma associate ai campi mediante la specifica @DEFQUERYCOLUMN /@BINDQUERYCOLUMN
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| IDQUERY | Long | ||||
| POSIZIONA | Intero | ||||
| IND | |||||
| CONTROLLI | Azione | ||||
| INIZIOGRUPPO | Azione | ||||
| LOOPGRUPPO | Azione | ||||
| FINEGRUPPO | Azione | ||||
| ORDINELETTURA | Intero | ||||
| ORDINAMENTO | Intero | ||||
| STRUTTURA | |||||
| VIRTUALE | Intero | ||||
| POSITIONBLOCK | Intero | ||||
| RECORDS | Long | ||||
| RECORD | Classe | ||||
| OGGETTO | Classe | ||||
| ERRORE | |||||
| RECORDSET | Collezione | ||||
| COLLEZIONE | Collezione | ||||
| INDICECORRENTE | Intero | ||||
| GRUPPOCORRENTE | Variabile | ||||
| VARCONTROLLI | Variabile | ||||
| TIPOREC | |||||
| VINCOLI | Intero | ||||
| VELOCE | Intero | ||||
| AZIONE | 29.3 |
IDQUERY
Identificatore della query ottenuto tramite @DEFQUERY.
POSIZIONA
Indica la gestione del posizionamento all'interno della collezione.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | non deve essere eseguito il posizionamento (essendo già stato eseguito da una operazione precedente) |
1 | deve essere eseguito il posizionamento con la chiave indicata sulla specifica |
2 | deve essere eseguito il posizionamento con position-block |
IND
Definisce l'indice con il quale eseguire la lettura.
CONTROLLI
Indica la routine che deve essere eseguita per la validazione del record letto.
INIZIOGRUPPO
Indica la routine richiamata per gestire l'inizio della lettura dei record che rientrano in un gruppo.
LOOPGRUPPO
Se presente, legge tutti i record del resultset e richiama la routine indicata per ogni record (dopo l'eventuale filtro operato dalla routine specificata dall'attributo CONTROLLI).
FINEGRUPPO
Indica la routine richiamata per gestire la fine della lettura dei record che rientrano in un gruppo.
ORDINELETTURA
Indica l'ordine di lettura crescente o decrescente.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | Lettura dei record mediante l'indice in ordine crescente |
1 | lattura dei record mediante l'indice in ordine decrescente |
ORDINAMENTO
Indica quale indice di ordinamento utilizzare nel caso non siano stati specificati attributi IND.
STRUTTURA
Identifica la struttura sulla quale si intende eseguire l'inserimento dei dati letti dalla '@GETQUERYDATA.
Con il parametro MAXRECORD è possibile definire un numero massimo di record caricati sulla struttura dinamica.
VIRTUALE
Permette la sovrapposizione tra la gestione delle tabelle su DB e la gestione delle tabelle in Struttura Dinamica.
L'utilizzo del parametro VIRTUALE è subordinato alla sola definizione della query tramite @DEFQUERYSPEC con parametro
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | la specifica gestisce il normale accesso alla tabella del DataBase. |
1 | la specifica gestisce l'accesso alla Struttura Dinamica in memoria, struttura definita con lo stesso nome del DFX della tabella. |
2 | la specifica gestisce solo l'accesso alla Struttura per le operazioni di LETTURA, mentre vengono gestiti sia il DB che la Struttura per le operazioni di SCRITTURA/CANCELLAZIONE |
L'utilizzo del parametro esclude l'utilizzo dei parametri: RECORDS, AZIONE
POSITIONBLOCK
Dalla versione di traduttore 26.0 il funzionamento delle specifiche di accesso alla base dati GETDBDATA e GETQUERYDATA modificano il loro comportamento di default per aumentare le prestazioni.
Ritraducendo un sorgente con 26.0 il calcolo del position block non viene più effettuato, tranne nei casi: GETDBDATA / GETQUERYDATA collegato a griglia standard Valorizzazione di ZDB_OPTDB_<DFX> ( con un valore diverso da 0) per ottimizzare le letture.
I sorgenti che non vengono ritradotti con il traduttore 26.0 e versioni successive non modificano il comportamento delle specifiche GETDBDATA / GETQUERYDATA.
RECORDS
Restituisce il numero di record presenti nel record-set restituito dall'esecuzione della query.
Il parametro non è compatibile con il parametro VIRTUALE.
RECORD
Il parametro è stato disponibile fino alla versione 24.1, è stato sostituito dal parametro OGGETTO[].
OGGETTO
Indica il nome della variabile di tipo oggetto che conterrà la riga della tabella letta.
ERRORE
Indica un'azione da eseguire nel caso in cui sia stata raggiunta la fine/inizio del file, nel caso in cui siano terminati i record che soddisfano i filtri indicati nel parametro SELEZIONI[] o nel caso in cui l'archivio non esista
RECORDSET
Il parametro è stato disponibile fino alla versione 24.1, è stato sostituito dal parametro COLLEZIONE[].
COLLEZIONE
Indica il nome della variabile di tipo collezione che conterrà le righe restituite dalla specifica.
La collezione viene svuotata prima di estrarre i dati.
L'utilizzo del parametro esclude l'utilizzo del parametro RECORDSET
GRUPPOCORRENTE
Variabile che conterrà l'indicazione del gruppo corrente all'interno delle callback di gestione dei gruppi (si sostituisce a ZDB_GRUPPOCORR_IdQuery).
VARCONTROLLI
La variabile su cui sono presenti i vari controlli.
VINCOLI
Permette di abilitare la gestione della profilazione se la tabella è soggetta a un vincolo di tipo elenco, inserendo in modo automatico delle clausole SQL da parte dell'ambiente, per filtrare gli elementi della tabella
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
VELOCE
Questa funzionalità permette di utilizzare il record set di ritorno dal database come se fosse una tabella i cui elementi sono accessibili mediante indice.
AZIONE
Permette di indicare una callback per l'elaborazione dei dati.
L'utilizzo del parametro esclude l'utilizzo dei parametri: RECORDS, CONTROLLI
Esempi
Definizione con parametro COLLEZIONE
DIM families[CLASSE[BLD_FAMIGLIA] COLLEZIONE]
'@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_GETQUERYDATA_4"]
'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDFAMIGLIA]
'@DEFQUERYCOLUMN IDQUERY[IdQry] ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]] _
ESPR[BLDFAMIGLIA.DES AS [DesFamiglia]] _
ESPR[BLDFAMIGLIA.CODMACRO AS [CodMacrofamiglia]] _
ESPR[BLDFAMIGLIA.DATAINIZVAL AS [DataInizioVal]] _
ESPR[BLDFAMIGLIA.DATAFINEVAL AS [DataFineVal]]
'@GETQUERYDATA IDQUERY[IdQry] COLLEZIONE[families]
Definizione con parametro AZIONE
DIM families[CLASSE[BLD_FAMIGLIA] COLLEZIONE]
DIM fam[CLASSE[BLD_FAMIGLIA]]
'@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_GETQUERYDATA_4"]
'@DEFQUERYFROM IDQUERY[IdQry] TABELLA[BLDFAMIGLIA]
'@DEFQUERYCOLUMN IDQUERY[IdQry] ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]] _
ESPR[BLDFAMIGLIA.DES AS [DesFamiglia]] _
ESPR[BLDFAMIGLIA.CODMACRO AS [CodMacrofamiglia]] _
ESPR[BLDFAMIGLIA.DATAINIZVAL AS [DataInizioVal]] _
ESPR[BLDFAMIGLIA.DATAFINEVAL AS [DataFineVal]]
families.Clear()
'@GETQUERYDATA IDQUERY[IdQry] OGGETTO[fam] AZIONE[GES[PopulateCollection(fam [INOUT])]]
Definizione con ciclo di lettura dati
DIM endRead[TIPO[BCBOOL]] = #False
DIM varPosition[INT] = 1
'@DEFQUERY IDQUERY[IdQry] NOME["BCRIF_GETQUERYDATA_4"]
While Not endRead
'@GETQUERYDATA IDQUERY[IdQry] POSIZIONA[varPosition] ERRORE[endRead = #True]
If endRead Then ExitWhile
DataElaboration()
EndWhile