Valore di default |
E' possibile assegnare al campo valori predefiniti (Autoincremento, valori numerici o stringhe generiche), o che derivano da operazioni svolte su altri campi della tabella (Calcolo, Calcolo SQL) sulla base della tipologia del campo stesso:
Valori predefiniti in relazione alla tipologia del campo
Il valore viene calcolato o ricalcolato ogni volta che si aggiorna il Database attraverso la MDBaseView (entrando in modifica e poi premendo il pulsante salva verranno ricalcolati i valori del record corrente). Esiste la possibilità di aggiornare tutti i campi calcolati di una classe attraverso il comando Ricalcolo records presente nella Toolbar MDB-Utilità.
Dimensioni geometriche
Questo gruppo di campi calcolati sono relativi alle caratteristiche geometriche o alla posizione degli oggetti grafici che costituiscono una classe:
Larghezza (<W>)
Altezza (<H>)
Profondità (<D>)
Posizione X (<X>)
Posizione Y (<Y>)
Posizione Z (<Z>)
Rotazione (<ROT>)
Scala X (<XSC>)
Scala Y (<YSC>)
Scala Z (<ZSC>) Vari
Autoincremento (<INC>)
Questo valore viene normalmente utilizzato per i campi chiave. E' possibile aggiungere un prefisso e/o un postfisso: digitando, ad esempio, AM<INC>Z, il risultato sarà: AM001Z, AM002Z, AM003Z, ecc.
Nome del blocco (<BLK>)
Riempie il campo con il nome del blocco (o dei blocchi) che caratterizza una classe puntuale.
Calcolato (<CAL>)
Si utilizza per fare operazioni semplici sulla classe corrente. Operazioni supportate: +, -, *, /, ^ (elevazione a potenza)
Esempio: si supponga di avere i seguenti campi 'Perimetro','Altezza', 'PrezzoManoDopera'; possiamo avere un campo calcolato che in automatico calcoli il costo (Il prezzo della mano d'opera ipuò indicare il costo dell'imbianchino + il materiale al metro e non sarà un campo ma un valore fisso e/o una costante) :
Calcolato SQL (<CALSQL>)
Si possono costruire campi calcolati molto complessi utilizzando espressioni tipiche del linguaggio SQL (Structured Query Language):
NB: Statements e Functions sono solo un aiuto alle creazione di una stringa SQL formalmente corretta, funzioni ed istruzioni variano in base al tipo di database correlato, quelle inserite "funzionano" con tutti i DB che è possibile collegare.
Esempi
Si suppongano 3 tabelle:
Nella tabella A in un campo nuovo desidero copiare la descrizione di un lookup (tabella C) della tabella B:
Questa è la stringa da inserire nella casella Espressione:
Select DESCRIZIONE from (SELECT [$TP_Stradario_Circoscrizione].DESCRIZIONE AS DESCRIZIONE, TP_Stradario.CIRCOSCR, TP_Stradario.COD_LUOGOP, TP_Stradario.ID_LUOGO FROM TP_Stradario LEFT OUTER JOIN [$TP_Stradario_Circoscrizione] ON TP_Stradario.CIRCOSCR = [$TP_Stradario_Circoscrizione].CODICE)T1 where '[-COD_LUOGOP]' = COD_LUOGOP and '[-ID_LUOGO]' = ID_LUOGO
Select Campo DESCRIZIONE della tabella di lookup from (SELECT [nome tabella di lookup].DESCRIZIONE AS DESCRIZIONE, Nome Tabella B .Nome Campo a cui è collegato il lookup, TP_Stradario.COD_LUOGOP, TP_Stradario.ID_LUOGO (campi chieve di collegamento tra tabelle dati T abella B ) FROM Nome Tabella B LEFT OUTER JOIN [$Nome Tabella C] ON Nome Tabella B .Nome Campo a cui è collegato il lookup= [$$Nome Tabella C].$Nome Campo Codice della tabella C)T1 where '[Nome Campo di collegamento tra tabelle A e B della tabella A]' = Nome Campo di collegamento tra tabelle A e B della tabella B and se le tabella hanno + campi chiave ripetere il testo dopo where
Valutatore di espressioni SQL:
La sringa sql inserita verrà 'analizzata' e modificata secondo i seguenti parametri:
Tutti i campi tra parentesi [] verranno sostituiti con il valore che quel campo assume nel record corrente. Se il campo in questione è un lookup il meno (-) dentro le parentesi quadre vuol dire di prendere il codice altrimenti prende la descrizione.
Esempi di campi calcolati
Detto questo, in fase di valutazione dell'espressione ci sono, a seconda se il campo è di tipo <CAL> o <CALSQL> delle funzioni carattere che si possono inserire all'interno delle '[' ']' (parentesi quadre del campo) oltre al (-) sopra citato. Eccone un elenco e relativo funzionamento:
<CALSQL>
Carattere chiave: * (asterisco), da inserire precedentemente al nome del campo cui si vuole applicare, subito dopo la [ . Campo "NOME_CAMPO" deve contenere: il nome univoco di una classe (Esempio RF006). Utilizzo: nel caso in cui si abbia, all'interno dei vari campi di una data tabella, il riferimento tramite nome univoco della classe ma si abbia bisogno del nome della tabella in questione. Esempio: SELECT [NM_QUOTA] FROM [*NOME_CAMPO] WHERE NM_U_ID='[CAMPO_X]' ⇒ Prima interpretazione ⇒ SELECT NM_QUOTA FROM *NOME_CAMPO WHERE NM_U_ID='CAMPO_X' ⇒ Sostituzione Valori ⇒ SELECT NM_QUOTA FROM *RF006 WHERE NM_U_ID='VALORE_CAMPO_X' ⇒ Computazione funzione carattere ⇒ SELECT NM_QUOTA FROM NOME_TABELLA_DELLA_CLASSE_RF006 WHERE NM_U_ID='VALORE_CAMPO_X'
|