Valore di default

Top  Previous  Next

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

 


Carattere

Intero

Reale

Memo

DateTime

Time

Date

Documenti

Larghezza



X






Altezza



X






Profondità



X






Posizione X



X






Posizione Y



X






Posizione Z



X






Rotazione



X






Scala X



X






Scala Y



X






Scala Z



X






Autoincremento

X

X







Nome blocco

X

 







Calcolato

X

X

X






Calcolato SQL

X

X

X

X

X

X

X

X

 

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)
Funzioni supportate: acos, asin, atan, cos, cosh, exp, fab, ln, log, sin, sinh, sqrt, tan, tanh

 

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) :

 

CampoCalcolato1MDBManager

Aggiungi valore: aggiunge il valore del campo seleziona nella stringa 'Espressione';

 

Aggiunge valore di lookup: aggiunge il  codice  del campo di lookup;

 

Aggiunge descrizione: aggiunge la descrizione del campo di lookup

 

Costanti: aggiunge all'espressione il valore di una costante. Ad esempio per il 'PrezzoPittura'  potrei utilizzare una costante

Calcolato SQL (<CALSQL>)

 

Si possono costruire campi calcolati molto complessi utilizzando espressioni tipiche del linguaggio SQL (Structured Query Language):

 

 

CampoCalcolatoSQLMDBManager

Espressione: casella di testo nella quale viene memorizzata la stringa SQL;

 

Campi (finestra sinistra): elenco dei campi della tabella collegata alla classe corrente;

 

SQL:

 

Statements: elenco di istruzioni e espressioni SQL;
Functions: elenco di funzioni SQL;
Tables: elenco delle tabelle dati presenti nel database;

 

Campi (finestra destra): elenco dei campi relativi alla tabella selezionata nella finestra SQL->Tables

 

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:

 

Tabella A - GAS Tubazione
Tabella B - Stradario
Tabella C - Lookup del campo circoscrizione della stradario

 

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

 

NomeTabella

LabelCampo

LunghCampo

TipoCampo

OrigineValori

Tipo

AltriOggetti

Calc1

4

FLOAT

$PIGRECO

<CAL>

Tubazione

Sezione [cm2]

2

FLOAT

[Diameter]*[Diameter]*$PIGRECO/4*(1/100)

<CAL>

Tubazione

DiameterId

2

FLOAT

[Diameter]

<CAL>

Tubazione

Quota strada da [m]

2

FLOAT

SELECT QS - [P_DA] FROM [CL_DA] WHERE ID='[CL_ID_DA]'

<CALSQL>

Tubazione

Volume [m3]

2

FLOAT

[Lunghezza]*[Section]/10000

<CAL>

Tubazione

Lunghezza 3D [m]

2

FLOAT

sqrt(([Lunghezza]*[Lunghezza])+( ([QS_A]-[QS_DA])*([QS_A]-[QS_DA])))

<CAL>

Tubazione

Dif. di quota [m]

2

FLOAT

[QS_A]-[QS_DA]

<CAL>

Tubazione

Pendenza media [%]

2

FLOAT

[DiffQuota]/[LunghReale]*100.0

<CAL>

Tubazione

Quota strada a [m]

2

FLOAT

SELECT QS - [P_A] FROM [CL_A] WHERE ID='[CL_ID_A]'

<CALSQL>

Pozzetti

Quota tubazione [m]

2

FLOAT

SELECT (([Progressiva] * [Pendenza] / 100.0) + [QS_DA]) FROM [CL] WHERE ID='[CL_ID]'

<CALSQL>

Tubazione

Lunghezza 3D [m]

2

FLOAT

sqrt(([Lunghezza]*[Lunghezza])+(([DiffQuota])*([DiffQuota])))

<CAL>

Tubazione

Dif. di quota [m]

2

FLOAT

[QS_A]-[QS_DA]

<CAL>

Tubazione

Pendenza media [%]

2

FLOAT

[DiffQuota]/[LunghReale]*100.0

<CAL>

Tubazione

Volume [m3]

2

FLOAT

[Lunghezza]*[Section]/10000

<CAL>

Tubazione

Quota strada da [m]

2

FLOAT

SELECT QS - [P_DA] FROM [CL_DA] WHERE ID='[CL_ID_DA]'

<CALSQL>

Tubazione

Quota strada a [m]

2

FLOAT

SELECT QS - [P_A] FROM [CL_A] WHERE ID='[CL_ID_A]'

<CALSQL>

Tubazione

DiameterId

2

FLOAT

[Diameter]

<CAL>

Tubazione

Sezione [cm2]

2

FLOAT

[Diameter]*[Diameter]*$PIGRECO/4*(1/100)

<CAL>

 

 

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>

 

[*NOME_CAMPO]

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'