Newsgroup: it.comp.appl.access
Titolo: Problema Calcolo Euro e divise Monetarie

valute che non hanno più corso legale perché sono confluite nell'euro?
scusa ma il problema non e' raltivo solo ai paesi dell' Euro x i quali la
divisa e' comune ma a quelli che non hanno euro come divisa
naturalmente........e poi non ho molto ben capito cosa intendi quando chiami
campi come    dtm ...cur......chr.....scusa l'ignoranza ma cosa
rappresentano questi acronimi?  ciao a tutti e grazie x l'aiuto


Ciao Fabio
È meglio - la prossima volta - che tu prosegua la discussione in corso
invece di aprirne una nuova,
visto che si tratta dello stesso argomento.
I prefissi cui ti riferisci fanno parte di un metodo di assegnazione dei
nomi ai campi delle tabelle (dtm... per le date, cur... per i campi con
numeri/valuta, chr... per i campi testo)
***
Ritengo si possa ottenere il controvalore in euro senza usare codice: resta
il fatto che in qualche modo bisogna far sapere ad Access il cambio.
La mia proposta era basata su tre tabelle:
1) tblSpese (tabella in cui registri le singole spese, completa di data e
divisa)
2) tblValute (tabella anagrafica delle divise che utilizzi - per le valute
confluite nell'euro suggerivo di impostare anche il rapporto di cambio con
l'euro - tanto non cambia)
3) tblGiornaleCambi (tabella in cui registri - giorno per giorno - i cambi
delle divise non euro tipo dollaro, franco svizzero eccetera)
A questo punto la tua base dati dispone di tutti gli elementi per calcolare
il controvalore in euro delle spese espresse in altre divise. Il calcolo per
visualizzare nella maschera in controvalore in euro è estremamente semplice:
   = [ImportoInDivisa]/[Cambio] (da scrivere nell'origine controllo della
casella di testo in cui vuoi visualizzare il controvalore)
***
Ovviamente la griglia delle possibili soluzioni è molto ampia (dal semplice
scrivere - per ogni spesa - il cambio, a modalità ancora più complesse di
quella che propongo io). Tu dì come vorresti fare che poi possiamo discutere
la messa in pratica.
Ciao
--
Alberto

Beh Alberto....non posso che dire grazie per la tua cortesia competenza ed
aiuto concessomi . Mi metterò subito al lavoro pianificando il da farsi
grazie anche al tuo preziosissimo aiuto!
Poi se avrai la pazienza di riascoltarmi ti esprimero' altri miei dubbi
ehehe.
Grazie a te e a tutti x l'eventuale aiuto!!   ciao

Ciao! Ho deciso di applicare quanto suggeritomi da Alberto.
Ho cosi' creato una tabella contenente il valore al cambio delle divise che
si lega in relazione uno-molti con la tabella delle spese.(tabella
contenente spese per articoli informatici comprati anche all'estero) Non ho
intenzione di creare una tabella aggiornata quotidianamente dei cambi in
quanto mi serve un valore indicativo dei costi anche se non e' precisissimo
Ora la situazione e' questa............ho la maschera principale dalla quale
gestisco le mie spese........metto gli importi nella valuta con la quale mi
vengono venduti (Dollari, Euro , ecc...), poi indico la valuta di
riferimento e alla fine ho impostato un campo calcolato in cui ottenere il
controvalore degli importi in Euro........ed ho impostato la formula
=[Importo generico]/[Cambio]
Il problema e' che mi esce errore nel campo calcolato e ci ho perso un
casino di ore ma nn capisco perche'.
Ho impostato entrambi i campi della divisione a valuta con due cifre
decimali.....ho impostato a valuta anche il campo calcolato........ho
ricontrollato mille volte l'esatto nome dei campi nella formula ma non vi ho
trovato nessun errore.........EVIDENTEMENTE L'ERRORE E' IN QUALCHE REGOLA
CHE NON HO CAPITO MA QUALE!!!
Inoltre mi assilla un altro dubbio:in Access 97  quando imposto un campo nel
formato valuta non riesco a far andar via il prefisso L. che identifica le
lire..........mentre io vorrei il simbolo Euro o al massimo nulla!!!! Come
posso fare? esiste soluzione?
Poi ho notato una cosa........e scusate l'ignoranza:in alcuni campi delle
mie tabelle appaionp dei puntini che non c'entrano nulla con i dati digitati
dal sottoscritto.....puntini e a volte virgole........che se tento di
mandare via non ci riesco.......ma che sembrano non alterare l'applicazione
da me finqui creata
Questo e' tutto...........aiutoooooooooooooo!!!!!!!

 da me finqui creata
Questa, mi dispiace, ma non l'ho capita.
Ciao
--
Alberto

Alberto ti ringrazio.......ciao!!!

Riporto il messaggio di Fabio e la mia risposta
*********************************
Ciao Alberto .grazie x l'aiuto di ieri...ma oggi sono qui di nuovo a rompere
eheheh
Scusa se ti scrivo direttamente in e-mail. Forse e' anche scortese nell'
ambito del newsgroup ma siccome sei l'unico che mi ha aiutato finora e visto
che ho paura di perderti nella valanga dei post che ci sono ho deciso di
farti arrivare direttamente questa mail (ma se ci sono problemi
prossimamente riposto sul newsgroup)
ho risolto il problema del suffisso L. aggiornando le impostazioni
internazionali ma proprio non riesco ad associare l'espressione al controllo
calcolato da me desiderato .
Mi spiego meglio: ho la tabella anagrafica dei fornitori legata da una
relazione uno-molti con quella dei contratti e quest'ultima legata uno-molti
con la tabella dettaglispese.La tabella delle valute e' legata a quella del
giornale dei cambi (uno-molti) inoltre la tabella delle valute e' legata a
quella dei dettagli spese( sempre.Ti spiego le relazioni x meglio
inquadrarti il panorama generale.
Il mio obiettivo e cio' che a dire il vero mi è stato richiesto è questo :
creare un'unica maschera d'immmissione dati che andranno a popolare le
tabelle che ti ho sopra descritto .e fino qui tutto normale.
Ora arrivo al mio problema .sto' implementando la maschera  con una
struttura a sottomaschere e campi calcolati. La maschera master anagrafica
collegata in sottomaschera con i contratti e quella dei contratti collegata
in sottomaschera con quella dei dettagli spesa. Ora viene il
problema.....dalla maschera che sto' elaboraborando voglio collegarmi alla
tabella valuta con casella combinata x immettere la valuta di riferimento
(es:dollaro, e lo).poi voglio agganciarmi alla tabella GiornaleCambi(o cmq
maschera di riferimento) tramite combobox.e fino qui sembra andare tutto
perfettamente..........il problema sorge nel controllo calcolato che mi deve
restiturire il valore =[Importogenerico]/[cambio] .
Il problema e' che questo controllo genera errore e non so' a cosa sia
dovuto........alle relazioni? ai formati scelti x i campi?che ho impostato
tutti a valuta come credo sia esatto? oppure come penso io a qualcosa di
errato nella creazione delle caselle combinate..o forse c'e' un errore
nell'espressione =[Importogenerico]/[cambio] . Ho provato ad immettere la
tua anche senza capirla Me.[Importogenerico]/Me.[cboValuta].Column.(1) ma
nulla.....a proposito che vuol dire questa formula? e come devo usarla?Forse
l'errore e' dovuto anche al fatto che voglio creare un controllo calcolato
con un'espressione tra due campi di caselle combinate e non so' se la cosa
e' corretta in access.
Ciao...spero tu mi possa aiutare e scusa l'invadenza
*********************************
Personalmente non mi da fastidio ricevere i messaggi direttamente in
casella: il fatto è che moltissimi in questo NG (e io sono tra quelli)
ritengono corretto sviluppare solo pubblicamente le discussioni. Ti dico
solo le prime tre ragioni che mi vengono in mente:
1) A prescindere dal fatto che il problema venga o no risolto, è sempre
interessante per tutti conoscere le varie problematiche in cui ci si viene a
trovare lavorando col database.
2) Nella (poco probabile) ipotesi che io riuscissi a dare una risposta
originale sarebbe giusto che tutti ne potessero venire a conoscenza.
3) Nella (invece più probabile) ipotesi che io ti rispondessi con qualche
castroneria ci sarebbe qualcuno che mi correggerebbe, aiutando così sia me
che te.
Veniamo al problema...
Mi pare di capire che le uniche difficoltà riguardano la sottomaschera dei
dettagli spese. Intanto - dal momento che hai deciso di attribuire un valore
di cambio fisso ad ogni divisa - non serve che tu crei una tabella
GiornaleCambi: è sufficiente che nella tabella delle valute tu aggiunga il
campo 'cambio' e lì tu scriva il cambio fisso che vuoi usare per ogni
divisa.
Nella sottomaschera  delle spese avrai una casella di testo
[importogenerico] che avrà origine controllo nel campo della tabella
'dettaglispese' dove memorizzi l'importo in divisa della spesa.
Sempre nella sottomaschera avrai una casella combinata [cboValuta] che avrà
origine controllo nel campo detta tabella 'dettaglispese' dove memorizzi la
divisa in cui è stata sostenuta la spese. Questa casella combinata l'avrai
creata con l'autocomposizione traendo i dati dalla tabella delle valute;
questa casella combinata sarà composta da due colonne: la prima sarà il nome
della valuta e la seconda il cambio.
Ora, nella casella di testo in cui vuoi visualizzare il controvalore in
euro, metterai come origine controllo
 =[importogenerico]/[cboValuta].Column(1)  -- (come vedi già una castroneria
l'avevo scritta ieri ...)
Vedi cosa riesci a fare, che problemi ci sono, poi magari ci risentiamo.
P.S.: ho tralasciato la questione degli arrotondamenti - la affronterai dopo
aver risolto il problema del cambio.
Guarda che questa soluzione io l'ho già provata e funziona.
Ciao.
--
Alberto

Ciao Alberto.....ho provato la tua soluzione e funziona!!!
Di cio' ti ringrazio e soprattutto ti ringrazio moilto dell'aiuto offerto.
Ora si pone un altro problema: come faccio a calcolare i totali dei prezzi
in Euro nel piè di pagina maschera......ossia la somma delle varie spese in
euro ma nella stessa maschera? Ho provato ma l'espressione usata non
funzione forse perche' cerca di sommare risultati di importi calcolati

 funzione forse perche' cerca di sommare risultati di importi calcolati
Io l'ho risolto con qualche riga di codice (poche comunque).
Io ho ipotizzato i seguenti oggetti con i seguenti nomi (ovviamente
sostituisci con i nomi che tu effettivamente usi)
La tabella in cui registri le varie spese si chiama 'tblSpese'. In tblSpese
il campo in cui registri l'importo della spesa in valuta estera si chiama
'ImportoGenerico' e il campo in cui registri la valuta si chiama 'idValuta'.
La tabella con l'elenco delle varie valute e i relativi cambi fissi si
chiama 'tblValute'. In tblValute il campo chiave (che è in relazione con la
tabella delle spese) si chiama 'idValuta' e il campo che accoglie il cambio
fisso si chiama 'Cambio'.
La casella di testo - nel piè di pagina della maschera - in cui vuoi
visualizzare il totale si chiama txtTotValoreEuro
Allora...
nella maschera 'spese' inserisci - a fronte dell'evento 'Su corrente' il
seguente codice:
Private Sub Form_Current()
Dim strSql As String
Dim rs As Recordset
    strSql = "SELECT Sum(" _
        & "[ImportoGenerico]/[Cambio]) " _
        & "AS TotaleEuro FROM tblValute " _
        & "RIGHT JOIN tblSpese ON " _
        & "tblValute.idValuta " _
        & "= tblSpese.idValuta"
    Set rs = CurrentDb.OpenRecordset(strSql)
    Me.txtTotValoreEuro = rs!TotaleEuro
    Set rs = Nothing
End Sub
... ricordati di impostare il riferimento al DAO
... inoltre resta sempre aperta la questione arrotondamenti
Se ho dato per scontate troppe cose dimmelo (DAO ecc ecc) dimmelo. Fammi
sapere.
Ciao
--
Alberto

Ciao Alberto! Grazie ancora x l'aiuto anche se, devo dire, che la mia
ignoranza in materia di VBA supera di gran lunga la tua cortesia seppur
estrema.
Infatti la tua ultima soluzione propostami sarà senza dubbio efficiente e
funzionale ma per i profani come me non applicabile senza un previo studio
del puro codice!!!!
Avrei molte cose da chiederti :
in primis........cos'è un riferimento DAO e come si imposta?Cosa è l'evento
su Corrente?......cosa vuol dire rs?ed inoltre altre specifiche sintattiche
di quanto da te enunciato come: Set rs-CurrentDb.OpenRecordset(strSql)
Inoltre mi puoi fare un esempio pratico del problema che dovro' affrontare
con gli arrotondamenti?..e come lo dovro' affrontare?
Inoltre ho un ultimo grandissimo dubbio..ma il calcolo nella sottomaschera
dei vari totali che mi possono venire in mente si possono fare solo
manualmente in editor di VBA o posso ricorrere a qualche oggetto canonico
che Access puo' mettermi a disposizione.
Inoltre visto che la creazione del Db che sto' attuando è al momento in
sospeso e mi sto' occupando di altre questioni volevo sentire date cosa mi
consigli:
Divoro un bel manuale di VB?VBA?( Vista le mie innumerevoli lacune) Ne hai
qualcuno da consigliarmi? Magari da scaricare? o mi puo' aiutare solo
l'esperienza dei problemi che affrontero' lavorando quando si presenteranno!
Ti chiedo ancora grazie per l'aiuto ed ascolto concessomi e soprattutto
chiedo scusa per il prolisso dilungarmi di questo post........ma necessito
veramente di delucidazioni!!!!

 l'esperienza dei problemi che affrontero' lavorando quando si
presenteranno!
Sul sito comune c'è la recensione di diversi testi. Ti sarà di aiuto per
scegliere quello più adatto.
A mio avviso sono necessari, magari ognuno in situazioni diverse, sia
manuale che guida in linea che NG.
Ciao, buon lavoro.
--
Alberto

Grazie veramente x i preziosissimi consigli......ciao!!!!

Ciao Alberto! Grazie ancora per l'aiuto che mi hai dato nella creazione del
database di gestione costi che attualmente però mi hanno detto di
sospendere.
Scusa inoltre se non per il doppio post ma e' da tanto che non ci sentiamo
quindi potresti non seguire + quel vecchio thread
Mi faccio sentire dopo molto tempo perche' ora devo creare un altro
database, il quale non dovrebbe essere molto complesso anche se ci sono
troppe cose che mi assillano.
E' necessario che io crei per questo DB una specie di tabella- calendario
attraverso la quale devo filtrare tutti i giorni lavorativi (devo escludere
cioè i giorni festivi come sabato e domenica e le festività come ad es: 1°
maggio ecc) e giungere quindi ad una tabella filtrata che sarà poi oggetto
di successive query.
La cosa so' come risolverla impostando una query sulla tabella calendario
non filtrata però qui nasce la mia domanda.
Il calendario che devo impostare dato che il DB potrebbe essere usato anche
tra 5/6 anni o più deve avere un automatismo (tramite VBA presumo) che mi
aggiorni il calendario a seconda del tempo che passa( e qui penso ci sia un
meccanismo legato all'orologio).................senza che io magari tra due
anni debba riaggiornare le date .
Detto in parole comprensibili quello che voglio è un record per ogni data
del calendario.......dato che x ogni data avro' degli importi di  Cash Flows
.
Quindi se oggi  è l'8 maggio e considero questa la data di partenza dei miei
record,  arrivati al 20 maggio io
mi dovrò aspettare 12 record con date progressive nella tabella e cosi' via
x le date successive.
E' possibile fare questo automaticamente o devo crearmi a priori una
struttura di calendario che magari comprenda ad esempio 1000 record in modo
da restare coperto x circa tre anni prima di riaggiornare il db?
Inoltre se e' possibile applicare questo automatismo vorrei che mi
aggiungesse record non dal giorno corrente ma dai 15-30 giorni successivi
Esempio: se oggi e' l'8 maggio vorrei avere nella mia tabella record
temporali che giungono fino a circa l'8 giugno.Il giorno successivo i record
si sposteranno avanti di uno ma al 9 giugno e cosi' via.
Non so' se sono stato chiaro...forse non molto e  me ne rendo conto data la
novità per me di questi cacoli...ma se sei in grado tu o anche altri utenti
esperti di Access di aiutarmi te ne sarei infinitamente grato.
Mi scuso per la lunghezza di questo mio messaggio ma avevo necessità di
spiegare in maniera quanto + comprensibile il mio problema, mi scuso x
eventuali disagi.
Grazie a te Alberto ed a tutti...ciao
P.S.
E' possibile generare questo calendario stabilendo a priori di non generare
record per tutti i sabati e le domeniche e le festivita' che l'utente potra'
definire a parte con una tabella? O  x fare questo devo filtrare il
calendario creato?