Newsgroup: it.comp.appl.access
Titolo: Query: dimensione dei campi di una query -> impostare le posizioni  decimali nella query

Ciao a tutto NG !!!!!
Ho diverse query, alcune di creazione tabella altre di aggiornamento.
Dovrei riuscire a dirgli che la dimensione del campo di quella query è
pari a 3 posizioni decimali dopo la virgola. E' possibile? -> Tagliare
proprio il valore?
Ho visto che esiste in struttura query, facendo tasto destro
proprietà, formato e posizioni decimali. Ma purtroppo mi visualizza i
campi con le 14 posizioni decimali che io ho all'inizio.
SELECT
Temp_DistCalcoloCostiAlVolo.Temp_DistCalcoloCostiAlVolo_CostoMateriePrime,
Temp_DistCalcoloCostiAlVolo.dist_cstgenacq,
[Temp_DistCalcoloCostiAlVolo_CostoMateriePrime]*[dist_cstgenacq] AS
Valore_CostiGeneraliAcquisti,
Temp_DistCalcoloCostiAlVolo.Temp_DistCalcoloCostiAlVolo_CostoLavorazioni,
Temp_DistCalcoloCostiAlVolo.dist_id,
Temp_DistCalcoloCostiAlVolo.Temp_DistCalcoloCostiAlVolo_CostiVari,
([Valore_CostiGeneraliAcquisti]+
[Temp_DistCalcoloCostiAlVolo_CostoMateriePrime]+
[Temp_DistCalcoloCostiAlVolo_CostoLavorazioni]+
[Temp_DistCalcoloCostiAlVolo_CostiVari]) AS Base_CalcoloScarto
FROM Temp_DistCalcoloCostiAlVolo;
Grazie x l'aiuto,
Samantha





Grazie x l'aiuto,
Samantha
Devi TRONCARE o arrotondare...?
Nel 1° caso usa FORMAT nel campo in questione(dall'Help ti mostra come
impostare 3 Decimali)
Nel 2° caso leggi questo :
 
www.donkarl.com/it?FAQ2.1
ed usa la funzione di Karl nella Query.
SELECT fctRound([NomeCampo],3) As NomeCampoArrotondato
FROM T1
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------


Devo troncare!
Grazie Alessandro e buon lavoro
Samantha


Ciao Alessandro,
la query è questa, ma mi da errore
SELECT Temp_CostiProdotti.dist_id,
Temp_CostiProdotti.CostoMateriePrime,
Temp_CostiProdotti.dist_cstgenacq,
([CostoMateriePrime]*[dist_cstgenacq]) AS CostiGenAcq,
Format([CostiGenAcq],"#,##0.000") AS CostiGeneraliAcquisti,
Temp_CostiProdotti.CostoLavorazioni, Temp_CostiProdotti.CostiVari,
([costomaterieprime]+[CostiGeneraliAcquisti]) AS Sub_CGA,
Format([Sub_CGA],"#,##0.000") AS Sub_CostiGeneraliAcquisti,
([Sub_CostiGeneraliAcquisti]+[CostoLavorazioni]+[CostiVari]) AS
Base_CS, Format([base_cs],"#,##0.000") AS Base_CalcoloScarto,
Temp_CostiProdotti.dist_scarto, ([Base_calcoloscarto]*[dist_scarto])
AS CS, Format([cs],"#,##0.000") AS CostoScarto,
Temp_CostiProdotti.dist_trasp, ([Base_CS]+[Costoscarto]+[dist_trasp])
AS Base_CM, Format([Base_CM],"#,##0.000") AS Base_CalcoloMargine,
Temp_CostiProdotti.dist_marg, ([Base_calcolomargine]*[dist_marg]) AS
MargV, Format([MargV],"#,##0.000") AS MargineVolo,
([Base_calcolomargine]+[marginevolo]) AS Sub_MV,
Format([Sub_MV],"#,##0.000") AS Sub_MargineVolo,
Temp_CostiProdotti.dist_prov, ([sub_MV]*[dist_prov]) AS
Provvigioni_Volo, [provvigioni_volo]+[sub_marginevolo] AS Prezzo_Volo,
Temp_CostiProdotti.dist_valmargs, ([base_calcolomargine]+
[dist_valmargs]) AS Sub_MS, Format([Sub_MS],"#,##0.000") AS
Sub_MargSalvato, ([sub_margsalvato]*[dist_prov]) AS
Provvigioni_salvato, ([sub_margsalvato]+[provvigioni_salvato]) AS
Prezzo_salvamargine INTO Temp_DistintaValori
FROM Temp_CostiProdotti;
All'altezza di Sub_MV il valore è Sub_MV
3,4481,015
I valori precedenti sono:
Base calcolo margine 3,448
dist_marg 29,44% oppure 0,2944
(Per dist_marg ho provato a cambiare nelle proprietà anche
percentuale, ma il problema non cambia)
MargV 1,0150912225
MargV: ([Base_calcolomargine]*[dist_marg])
MargineVolo 1,015
MargineVolo: Format([MargV];"#.##0,000")
Sub_MV 3,4481,015
Sub_MV: ([Base_calcolomargine]+[marginevolo])
Sub_MargineVolo 3,4481,015
Sub_MargineVolo: Format([Sub_MV];"#.##0,000")
Perchè il campo SUB_MV mi da questo risultato 3,4481,015 ? che cavolo
vuol dire?
Qualcuno mi può aiutare a capire cosa succede in questa query?
Grazie!
Samantha


Ora ho capito!!!
IL campo Sub_MV è la concatenazione dei due valori, infatti 3,448 è
base_calcolo margine mentre 1,015 è margine volo, e il campo me li
indica in sequenza
3,4481,015... ma xchè?
Sub_MV: [Base_calcolomargine]+[marginevolo]
non è concatenazione io gli dico di sommare?!????
non capisco perchè faccia così...


Penso che i due campi formattati vengano interpretati come testo.
Infatti se sommo anziche Base_calcolomargine -> Base_cm (ossia il
campo non formattato)  la somma avviene in modo corretto.
uff. come posso fare???
Samantha


ok
ho capito, una parte...
il format(campo;"#.##0,000") che io utilizzo, mi trasforma il campo da
numerico in testo con tre posizioni decimali, troncando proprio il
resto delle cifre decimali.
Poi però io devo usare quel campo come somma... allora devo
trasformarlo da testo a numerico, con la funzione cdbl perchè tiene
conto dei decimali.
Ma se io anzichè usare all'inizio format(campo;"#.##0,000") usassi
format(cdbl((campo);"0,000") ottengo la troncatura del campo,
lasciandolo in formato numerico?
TEST: Format(CDbl([base_cm]);"0,000")
Sub_MV: ([test]+[marginevolo]) -> risultato è sempre la concatenazione
di stringhe


ok, alla fine ci sono
arrivata.............................................................................
Base_CM: ([Base_CS]+[Costoscarto]+[dist_trasp])
Base_CalcoloMargine: Format([Base_CM];"#.##0,000")
test: CDbl([Base_calcolomargine])
il campo test è quindi diventato di tipo numerico.
La domanda ora è: posso con il format ottenere la troncatura del campo
a 3 cifre decimali lasciandolo in formato numerico?
Grazie,
Samantha

Samantha
Vincenzo Turturro 
Certificato Eucip Core Level 
ITA 0000-002299 del 14/05/2007 
--------------------------------------------- 
il sito comune di it.comp.appl.access: 
http://www.sitocomune.com
 
--------------------------------------------- 
risorse Access: 
http://www.accessgroup.it
 
--------------------------------------------- 
Il sito comune di it.comp.as400 
http://www.faq400.com
 
---------------------------------------------

 ---------------------------------------------
:) Ciao Vincenzo :D
come stai?
Io ho trovato questo:
Base_CalcoloScarto: CDbl(Format(([Sub_CostiGeneraliAcquisti]+
[CostoLavorazioni]+[CostiVari]);"0,000"))
(format(campo);"0,000") -> tronca e trasforma in testo
cdbl () -> ritrasforma in numero quanto ho troncato con format
Buon lavoro
Samantha
ho visto che funziona perchè mi crea una tabella, e i campi così
costruiti vengono visti come numerico!!!!