Aggiungi(&$tabella, $campi=NULL, $alias=NULL, $tabClg=NULL)
questo metodo specifica quali sono le tabelle che si vogliono includere
nell'interrogazione. È possibile effettuare chiamate multiple a questo
metodo, oppure una sola chiamata con un vettore. I parametri $tabella o,
nel caso di tipo vettore, i suoi elementi possono essere, indistintamente,
degli oggetti di tipo bd/tabella o delle stringhe che rappresentano i
nomi delle tabelle.
Mentre si aggiungono le tabelle queste vengono automaticamente collegate
tra loro sulla base delle chiavi esterne definite. La classe fa riferimento
ad una variabile globale definita in un sorgente generato automaticamente
dal programma genchest.
Se viene specificato anche $campi, solo nel caso in cui venga passato
il nome della tabella e non l'oggetto, viene chiamato il metodo bd/tabella.iphp#AggiungiSolo
al posto del metodo bd/tabella.iphp#AggiungiTutto passandogli come
parametro $campi.
Se l'oggetto tabella ha un alias o se viene indicato il nome della tabella
e $alias, allora viene creata una costante con il nome dell'alias che vale
l'indice della tabella nella vista. È cura del programmatore mantenere tale
alias univoco.
In caso di chiavi esterne multiple è possibile indicare tabClg, come indice
di tabella nella vista per segnalare la tabella con la quale collegare
questa che si sta aggiungendo.
protetta VerificaAggiungi($tabella)
Unisci(&$vista)
questo metodo unisce alla vista attuale tutte le tabelle, le condizioni,
le formule, i collegamenti e gli ordinamenti specificati nella vista
passata come parametro.
la prima tabella della vista passata viene automaticamente collegata alle
tabelle presenti sulla base delle chiavi esterne definite. La classe fa
riferimento ad una variabile globale definita in un sorgente generato
automaticamente dal programma genchest.
ImpCollegamentoMorbido($bAttivaClgMorbido=VERO)
Abilita o disabilita il collegamento morbido tra le tabelle.
Il collegamento morbido significa che vengono incluse nella selezione tutte
le righe della tabella referente anche se non possiedono nessuna riga nella
tabella riferita. I valori delle colonne nella tabella riferita, in questo
caso, saranno nulli.
Il collegamento stretto, invece, include nella selezione solo le righe che
hanno una corrispondenza nella tabella collegata.
Il valore predefinito è il collegamento stretto.
Collega($iTabellaIni, $vCampiIni, $iTabellaFin, $vCampiFin, $bCambiaAManuale=VERO)
Impone una condizione di uguaglianza sui campi indicati in modo da
collegare due tabelle appartenenti alla vista.
$iTabellaIni è l'indice, con base 0, della prima tabella da collegare;
l'indice è riferito all'ordine di inserimento della tabella nella vista.
$vCampiIni è un vettore di interi che indicano l'indice, con base 0, delle
colonne all'interno della tabella da utilizzare nel collegamento. In caso
di colonna singola può essere un valore scalare.
$iTabellaFin e $vCampiFin hanno lo stesso significato dei due parametri
precedenti, solo che sono riferiti all'altra tabella che partecipa alla
relazione.
Se prima della chiamata a questo metodo esistevano dei collegamenti creati
in maniera automatica dal metodo #Aggiungi, questi vengono eliminati se il
parametro $bCambiaAManuale è vero.
Seleziona($posizione=0, $azzera=VERO, $stampa=FALSO)
Sql() &
Ritorna un stringa che rappresenta l'sql che verrebbe eseguito in base
allo stato corrente dell'oggetto.
Esporta() &
Ritorna un stringa che rappresenta lo stato interno dell'oggetto in modo che
possa essere persistito tra due differenti sessioni.
Questa stringa può essere passata come parametro al metodo Importa
statica
Importa(&$bd, &$stringone) &
Ripristina lo stato dell'oggetto come descritto dal parametro.
Il parametro dovrebbe essere un valore tornato dal metodo Esporta.
PrendiTabella($iTab) &
Ritorna la tabella contenuta nella vista indicata dal parametro $iTab.
Se il parametro è intero indica l'indice base zero della tabella; le tabelle
vengono numerate secondo l'ordine di inserimento.
Se il parametro è una stringa torna la tabella che ha un alias uguale al
parametro passato. Nel caso non esistesse nessuna tabella con l'alias
specificato verrà restiuita la tabella con il nome indicato; se continua a non
essere trovata il metodo torna NULL.
AggiungiSolo($sQuali)
$sQuali è un vettore di stringhe [SN ]* ognuna delle quali serve per
impostare la visibilità dei campi delle tabelle.
Espressione($id, &$nome, $cond)
Aggiunge all'insieme dei campi dell'ultima tabella aggiunta un'espressione
SQL.
Essa viene identificata tramite una costante identificativa ed un alias. Ad
essa possono essere passati un numero variabile di argomenti.
Se il parametro $cond è non nullo allora all'espressione indicata
verrà applicato il filtro opportuno.
$nome rappresenta l'alias dell'espressione. È importante notare che il
metodo html/protoh::PrendiVisCampo torna un controllo il cui nome è quello
del campo (od alias dell'espressione) preceduto da un _ (underscore). Questo
per evitare sovrapposizioni non volute con i parametri interni di navigami.
Se, invece, si volesse effettuare questa sovrapposizione utilizzare le
costanti TAB_NOME_* per valorizzare il parametro $nome.
Se il nome non inizia con - dopo l'inserimento dell'espressione verrà creata
una costante chiamata $nome che vale l'indice dell'espressione nella tabella
se il nome inizia per _, nella vista altrimenti.
Se $nome inizia per _ l'espressione non sarà inclusa nella selezione, ma potrà
solo essere usata per costruire espressioni più complesse.
Questo metodo, a differenza del meno efficiente EspressioneMultiTab,
consente di inserire espressioni riguardanti una sola tabella.
EspressioneMultiTab($id, &$nome, $cond)
Aggiunge all'insieme dei campi corrente un'espressione SQL
Essa viene identificata tramite una costante identificativa ed un alias. Ad
essa possono essere passati un numero variabile di argomenti.
Se il parametro $cond è non nullo allora all'espressione indicata
verrà applicato il filtro opportuno.
$nome rappresenta l'alias dell'espressione. È importante notare che il
metodo html/protoh::PrendiVisCampo torna un controllo il cui nome è quello
del campo (od alias dell'espressione) preceduto da un _ (underscore). Questo
per evitare sovrapposizioni non volute con i parametri interni di navigami.
Se, invece, si volesse effettuare questa sovrapposizione utilizzare le
costanti TAB_NOME_* per valorizzare il parametro $nome.
Se il nome non inizia con - dopo l'inserimento dell'espressione verrà creata
una costante chiamata $nome che vale l'indice dell'espressione nella vista.
Se $nome inizia per _ l'espressione non sarà inclusa nella selezione, ma potrà
solo essere usata per costruire espressioni più complesse.
Se $nome inizia per _ l'espressione non sarà inclusa nella selezione, ma potrà
solo essere usata per costruire espressioni più complesse o aggiungere
condizioni.
Formula($formula, $tipo)
aggiunge una formula o una variabile il cui valore viene calcolato
dinamicamente sulla base degli altri valori risultato della selezione.
Consultare dati/variabili per maggiori dettagli sulle formule già
implementate. Le variabili hanno un valore cumulativo, mentre le formule
hanno un valore calcolato dipendente solo riga corrente.
NomiVarr() &
torna un vettore contenente i nomi di tutte le variabili associate alla vista
NumTabelle()
Ritorna il numero di tabelle facenti parte della vista. Lavora in tempo
lineare
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)
IndiceCampo($nCampo)
prende $nCampo con lo stesso formato supportato da Campo e lo trasforma
in un indice sequenziale base 0 del campo indicato
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.
ImpVisibile($posCampo, $bool=VERO)
AggiungiCond($campo, $cond)
Aggiunge all'insieme delle condizioni correnti la condizione indicata,
sul campo indicato. $campo è l'indice del campo nella vista con base 0
oppure nella notazione (tab, nCampo).
se la tabella oggetto della condizione è collegata in modo morbido alle altre
allora la condizione viene aggiunta nel collegamento in vece che nella
sezione WHERE.
Validita($data)
Aggiunge all'insieme delle condizioni correnti una condizione sulla validità
delle righe selezionata.
Tale condizione assicura che per tutte le tabelle nella vista, collegate in
modo rigido, la data passata sia compresa tra i campi configurati nella
variabile globale $__validita che deve essere definita manualmente come un
vettore associativo nomeTabella--(campoDataIn,campoDataFine)
La data può essere espressa come valore fisso in formato AAAA-MM-GG, come
indice di campo della vista, come coppia (tabella,campo) o come oggetto Campo
(appartenente ad una tabella presente nella vista) da cui pescare i valori
da confrontare.
PrendiFiltri() &
Ritorna un vettore associativo indiceCampo=>Filtro applicato.
Attualmente ritorna solo i filtri associati alla prima tabella.
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.
-
privata UnificaVarGlobCollegamento($iTab1, $iCampo1, $iTab2, $iCampo2)
Elimina(&$condizione, $stampa=FALSO)
Elimina le righe indicate da $condizione appartenenti all'utente navigami
autenticato.
$condizione è una stringa contenente i valori di tutte le chiavi di tutte le
tabelle appartenenti alla vista. Per separare i valori vengono usati i
seguenti caratteri speciali:
privata SpacchettaCondizione(&$condizione) &
Inserisci(&$vValori, $bStampa=FALSO)
inserisce una riga con i valori indicati in $vValori in ogni tabella
compresa nella vista. Il parametro deve essere un vettore associativo
nomeControlloHtmlNavigami=>valore.
Se una cella non esiste od è vuota nel campo corrispondente verrà
inserito il valore di default stabilito dalla basedati.
Se i valori della chiave primaria (o di una parte di essa) non sono stati
specificati si cercherà di sostituirli col valore della chiave esterna o con
la generazione di un nuovo progressivo.
Aggiorna(&$valori, $bUsaNomiHtml=FALSO, $bStampa=FALSO) /*---- Da un vettore nomecampo => valore aggiorna le righe indicate dalla cella $valori['condizione'] questa è una stringa contenente i valori di tutte le chiavi di tutte le tabelle appartenenti alla vista. Per separare i valori vengono usati i seguenti caratteri speciali:
privata NodoSenzaFigli($indice, &$condizione)
privata CreaCondizione($indice) &
PrendiRiga($vValChiavi) &
Esegue un'interrogazione sulla vista e ritorna la
riga da essa restituita.
$vValChiavi è un vettore od un singolo valore dei primi campi della prima tabella.
Se la riga non esiste la funzione torna NULL.
privata PrendiValChiave($indice) &
locale CondizioneSelezione() &
locale CondizioneSelezioneMT() &
privata CondizioneSQL($bGruppo) &
Ordine($nCampo=NULL, $bDec=FALSO) &
Se $nCampo viene specificato esso viene aggiunto all'elenco dei campi
utilizzati per l'ordinamento; altrimenti viene ritornata la clausola da
mettere dopo la parola chiave ORDER BY in una interrogazione SQL.
privata CollegaAutomatico($tabClg)
privata CollegaAutomaticoSingolo(&$chiavi, $iTab1, $iTab2)
privata AllocaCollegamento($iTab1, &$vCampi1, $iTab2, &$vCampi2)
AggiungiCondMultiTab($iTab1, &$vCampi1, $iTab2, &$vCampi2)
locale
locale, astratta
AggiungiCampi($iColSorg, $iColDest)