Newsgroup: it.comp.appl.access
Titolo: calcolo dello sconto dinamico

Salve a tutti
vorrei costruire una funzione dello sconto dinamica
Se inserisco la percentuale di sconto mi deve calcolare il prezzo finale
arrotondato alle 100 lire superiori, se inserisco il prezzo finale deve
calcolarmi lo sconto.
Ho fatto una maschera di prova con questo codice:
Private Sub prezzo2_AfterUpdate()
prezzo_iniziale = prezzo1.Value
prezzo_finale = prezzo2.Value
valore_sconto = Abs((prezzo_finale - prezzo_iniziale) / prezzo_iniziale) *
100
Sconto.Value = valore_sconto
End Sub
Private Sub Sconto_AfterUpdate()
prezzo_iniziale = prezzo1.Value
sconto_perc = Sconto.Value
valore_finale = prezzo_iniziale * (sconto_perc / 100)
prezzo2.Value = prezzo_iniziale - valore_finale
End Sub
Sembra funzionare ma quando inserisco tutto nella maschera finale lo sconto
assume sempre l'ultimo valore calcolato.
Giancarlo

"Giancarlo Leccese" <glecce...@QUESTOlibero.it> ha scritto nel messaggio

Hai usato un po di giri.
Prima di tutto e' megli fare riferimento ai controlli in modo piu' esplicito
usando Me.TuoControllo e non solo TuoControllo, poi, per fare i calcoli, non
servono varibili intermedie.
Infine l'uso della funzione ABS e' formalmente errata. Se il presso finale
e' maggiore di quello iniziale, lo sconto deve essere negativo, mentre con
ABS lo fai uscire sempre positivo.
In sostanza sarebbe meglio scrivere:
Private Sub Prezzo2_AfterUpdate()
    Me!Sconto=1-Me!Prezzo2/Me!Prezzo1
End Sub
Private Sub Sconto_AfterUpdate()
    Me!Prezzo2=Me!Prezzo1*(1-Me!Sconto)
End Sub
Prova cosi'.
PS, con queste funzioni devi usare il formato percentuale.
Ciao
Sib

"Sib dall'ufficio" <cerrise...@SPAMtiscalinet.it> ha scritto nel
messaggio news:9onl58$bl0$1...@serv1.iunet.it...

Ciao
per formato percentuale intenti che devo scrivere 10%?
Per l'uso della funzione ABS lo so che non è corretto, ma l'ho usata per
praticita. Se io applico uno sconto del 10% nel codice che ho inserito il
risultato è negativo, brutto a vedersi.
Comunque ora provo subito.

"Sib dall'ufficio" <cerrise...@SPAMtiscalinet.it> ha scritto nel
messaggio news:9onl58$bl0$1...@serv1.iunet.it...

Grazie la formula funziona perfettamente,
ma come faccio a non far comparire nella casella dello sconto l'ultimo
valore calcolato o immesso?

 risultato è negativo, brutto a vedersi.
Puoi usare la formattazione condizionale per far comparire il numero
positivo ma, ad es, rosso. Vai sulla proprieta' formato e premi F1.
Sib
--
----------------------------------------------------
la mia home:
http://digilander.iol.it/syb
----------------------------------------------------
il sito comune di it.comp.database.access:
http://www.sitocomune.com
----------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente

 valore calcolato o immesso?
Sto capendo ora che il tuo controllo Sconto non e' collegato ad alcun campo
(se ho effettivamente capito bene). In questo caso puoi mettere la formula
che calcola lo sconto nell'evento SuCorrente della maschera.
Se anche il controllo Prezzo2 non e' collegato allora non puoi calcolare
alcuno sconto, in questo caso puoi impostare a 0 o a quello che vuoi (anche
Null) i due controlli sempre nell'evento SuCorrente.
Ciao


 ha scritto nel messaggio
news:JrOr7.4183$jT5.1...@news.infostrada.it...

Dunque,
ho inserito le formule nella maschera finale e ci sono due cose strane.
La prima e che lascio lo sconto al valore di default "0" l'espressione
quantita_venduta * (1-sconto) * prezzo_listino mi da "0" e non il prezzo di
listino per una quantita_venduta=1.
Se inserisco direttamente il prezzo_vendita <> prezzo_listino non mi calcola
lo sconto.
Come se non sentisse l'evento.
Giancarlo

 lo sconto.
Non è che con qualche operazione di copia/incolla hai inavvertitamente tolto
la formula dall'evento DopoAggiornamento?
Non e' che hai tolto la dicitura Routine evento dalla proprietà del
controllo?
Comunque il valore predefinito non equivale all'effettivo valore del
controllo prova a sostituire sconto con nz(sconto,0) nella formula.
Sib