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.

 

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>