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)