Questa classe affianca i risultati di una o più tabelle/viste

Consente, cioè, di eseguire delle interrogazioni su più tabelle unendo
in un singolo risultato le tuple risultanti dalle singole selezioni. <BR>
Ogni singola tupla risultante viene ottenuta scorrendo tutti i singoli
risultati e concatendo le diverse tuple. <BR>
Se un risultato termina prima di altri, i dati si potranno continuare a
scorrere e le celle corrispondenti saranno nulle. <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_affianca, consente, invece, di concatenare risultati di
selezioni eterogenee: risultati da diverse basedati o parte da basedati e
parte da vettore. <BR>


classe bd_affianca estende bd_vista
{
costruttore(&$bd);
Campo($nCampo); &
Carica($nome);
Collega($iTabellaIni, $vCampiIni, $iTabellaFin, $vCampiFin);
EspressioneMultiTab($id, &$nome, $cond);
IndiceCampo($nCampo);
NumCampi();
Ordine($nCampo=NULL, $bDec=FALSO); &
Salva($nome);
Seleziona($indice=0, $azzera=VERO, $stampa=FALSO);
}

classe bd_dati_affianca implementa ListaCampi, dati
{
costruttore(&$ris, &$alias);
Aggiorna();
Arrotola();
Campo($nCampo); &
Chiave($nCampo);
LiberaMem();
Matrice($bChiudi=VERO); &
Riga(); &
SonoAllaFine();
Sposta($posizione);
Valore($nCampo); &
VettCampi(); &
}


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

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

EspressioneMultiTab($id, &$nome, $cond)
Non è possibilie aggiungere espressioni SQL che coinvolgono i diversi membri di Affianca, in quanto non esiste un'espressione SQL complessiva. Utilizzare #Formula al suo posto

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

Campo($nCampo) &
Se $nCampo è un vettore:
- le prima celle devono contenere l'indice delle tabelle di cui si vuole recuperare il campo, usare le costanti generate da vista::Aggiungi o la costante ESPR_MULTI_TAB
- l'ultima 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)

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

protetta VerificaAggiungi($tabella)

Salva($nome) &

Carica($nome) &

Ordine($nCampo=NULL, $bDec=FALSO) &
La clausola di unione non può essere ordinata: ordinare le singole tabelle / viste.
eccezione!


locale costruttore(&$ris)

Aggiorna()

LiberaMem()

Arrotola()

Campo($nCampo) &

VettCampi() &

Chiave($nCampo)

Matrice($bChiudi=VERO) &

NumCampi()

Riga() &

SonoAllaFine()

Valore($nCampo) &

Sposta($posizione)