Questa classe implementa l'operatore di unione tra più tabelle o viste

Consente, cioè, di eseguire delle interrogazioni su più tabelle unendo
in un singolo risultato le tuple risultanti dalle singole selezioni. <BR>
Le tabelle che si vogliono utilizzare vengono specificate attraverso
il metodo @#Aggiungi. È possibile effettuare chiamate multiple al metodo
in questione oppure una sola chiamata con un vettore di oggetti tabella /
vista. <BR>
La classe bd_dati_unione, consente, invece, di concatenere risultati di
selezioni eterogenee: risultati da diverse basedati o parte da basedati e
parte da vettore. <BR>


classe bd_unione estende bd_vista
{
costruttore(&$bd);
Carica($nome);
Chiavi();
Collega($iTabellaIni, $vCampiIni, $iTabellaFin, $vCampiFin);
FormatoCondizione($base=0); &
GestisciEventi(&$valoriAggiuntivi, $bStampa=FALSO);
ImpVisibile($posCampo, $bool=VERO);
IndiceCampo($posCampo);
NumCampi();
Ordine($posCampo=NULL, $bDec=FALSO); &
Salva($nome);
Seleziona($indice=0, $azzera=VERO, $stampa=FALSO);
}

classe bd_dati_unione implementa ListaCampi, dati
{
costruttore(&$ris, $nCampoOrd=NULL, $bOrdineDec=FALSO);
Aggiorna();
Arrotola();
Campo($nCampo); &
Chiave($nCampo);
LiberaMem();
Matrice($bChiudi=VERO); &
NumCampi();
Riga(); &
SonoAllaFine();
Sposta($posizione);
Valore($nCampo); &
VettCampi(); &
}


costruttore(&$bd)
Unico parametro: l'oggetto basedati su cui va eseguita l'interrogazione

ImpVisibile($posCampo, $bool=VERO)
Visto che tutte le selezioni apartenenti all'unione devono avere gli stessi campi, questo metodo invoca il metodo ImpVisibile su tutte le selezioni partecipanti all'unione con gli stessi parametri.

Collega($iTabellaIni, $vCampiIni, $iTabellaFin, $vCampiFin, $bCambiaAManuale=VERO)
Non esistono collegamenti tra le tabelle!
Questo metodo lancia un'eccezione.

Chiavi($base=0)
Torna un vettore composto da tanti elementi quanti sono i campi chiave, ad ogni elemento è presente l'indice del relativo campo chiave nella tabella.
Il parametro $base è per solo uso interno.

Seleziona($posizione=0, $azzera=VERO, $stampa=FALSO)

protetta VerificaAggiungi($tabella)

Salva($nome) &

Carica($nome) &

IndiceCampo($nCampo)
prende $nCampo con lo stesso formato supportato da Campo e lo trasforma in un indice sequenziale base 0 del campo indicato

NumCampi()

Campo($nCampo) &
Se $nCampo è un vettore coppia:
- la prima cella deve contenere l'indice della tabella di cui si vuole recuperare il campo, usare le costanti generate da Aggiungi o la costante ESPR_MULTI_TAB
- la seconda cella deve contenere l'indice del campo nella tabella, usare le costanti definite dentro chest.iphp o quelle generate da tabella::Espressione
Se $nCampo è un intero deve valere l'indice progressivo base 0 come se tutti i campi e le espressioni fossero una di seguito all'altra, le espressioni multi tabella sono in fondo. (caso deprecato)

GestisciEventi(&$valoriAggiuntivi, $bStampa=FALSO) /*---- Gestisce gli eventi che si sono verificati.
Questo metodo verifica che in GET od in POST sia stata passata una variabile denominata elimina, inserisci o modifica; In questo caso intraprende l'azione opportuna fondendo il parametro $valoriAggiuntivi con le variabili generate dall'utente. In caso contrario non fa nulla.
Ritorna FALSO se nessuna azione viene intrapresa o se questa fallisce, VERO in caso di successo.
L'operazione viene delegata alla prima tabella/vista che partecipa alla clausola di unione.
-

Ordine($posCampo=NULL, $bDec=FALSO) &
L'ordinamento della clausola di unione si ottiene ordinando le singole tabelle / viste per il campo nella stessa posizione e istruendo la classe dei risultati a fornire la riga col valore più basso nella cella di ordinamento.
$posCampo è quindi relativo ad una qualunque delle tabelle/viste partecipanti all'unione e il metodo si occupa di trasmettere l'ordinamento a tutti i partecipanti nonché alla classe risultato.

privata IndiceVisibile($tabella, $nCampoVisibile)
Dato un indice di $tabella nell'unione e un $nCampoVisibile indicante la posizione di un campo nella selezione, ritorna l'indice posizionale del campo

FormatoCondizione($base=0) &


locale costruttore(&$ris, $nCampoOrd=NULL, $bOrdineDec=FALSO)

Aggiorna()

privata privata LiberaMem()

Arrotola()

Campo($nCampo) &

VettCampi() &

Chiave($nCampo)

Matrice($bChiudi=VERO) &

NumCampi()

Riga() &

SonoAllaFine()

Valore($nCampo) &

Sposta($posizione)