Newsgroup: it.comp.appl.access
Titolo: Operatore matematico

E' possibile utilizzare un controllo di opzioni per un operatore matematico?
Mi spiego devo prendere il segno + o - a secondo dell'opziopne scelta in una
maschera e utilizzarla per un operazione matematica in una query es:
[Forms]![miaMaschera]![opzione1]     =+
[Forms]![miaMaschera]![opzione2]    = -
Sulla query dovrei mettere:
50 [Forms]![miaMaschera]![opzione1] 30 risultato =80
50 [Forms]![miaMaschera]![opzione2] 30 risultato =20
Grazie per i Vs consigli.

"Marina F." <1@l1> ha scritto nel messaggio
news:bxol9.24827$e31.5...@twister2.libero.it...

Potresti mettere sulla maschera una una casella testo VALORE  , poi nella
Cornice0 delle opzioni attiverei l'evento Click
in tal modo nel campo valore della maschera ci sarà 1 ( positivo) o  2
(negativo)
_______________________
Private Sub Cornice0_Click()
Me.valore = Me.Cornice0
End Sub
------------------------------
Sulla query il risultato del campo verrà condizionato da una IIF del tipo
Risultato=IIF ([Forms]![miaMaschera]!valore=2;meno;più)

Per esempio potresti utilizzare la funzione interna iif, sopratutto se hai
solo i due valori  + e - da testare.
La forma dovrebbe essere
Risultato = iif([Forms]![miaMaschera]![opzione1] ="+",a+b,a-b)
dove a e b sono i valori da sommare o sottrarre.
Non credo sia l'unica soluzione e neppure la + elegante, però dovrebbe
funzionare.
Ciao. Maurizio.
"Marina F." <1@l1> ha scritto nel messaggio
news:bxol9.24827$e31.5...@twister2.libero.it...


"Marina F." <1@l1> ha scritto nel messaggio
news:bxol9.24827$e31.5...@twister2.libero.it...

Se la tua opzione può assumere il valore 1 e 0 puoi provare con
50 + IIf([Forms]![miaMaschera]![opzione1] = 1; 30; 30*-1)
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

> "Marina F." news:bxol9.24827$e31.5...@twister2.libero.it...:

    Consulta la guida a proposito di:
        Function Eval(StringExpr As String)
            Membro di Access.Application
[AC2000]
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------


Grazie Maurizio del tuo consiglio ora provo poi ti faccio sapere comunque
credo che questa funzione mi riduca notevolmente il criterio della query,
come lo stavo impostando io dovevo ripetere il riferimento ai controlli
della maschera più di una ritrovandomi una stringa lunghissima
quello che mi serviva era di portare il segno + o - per l'esecuzione di un
calcolo.
Ciao Marina

Ci ho provato senza esito; ora ti spiego il bandolo:
Ho una maschera con un controllo percentuale e un gruppo di opzioni con due
possibli scelte aumento , diminuzione
su dopo aggiornamento del guppo opzioni ho questa rutine che mi mette in un
controllo Tst21 il segno + o - a seconda della scelta fatta dalle opzioni
Private Sub Operazione_AfterUpdate()
If Operazione = 1 Then
Tst21 = "+"
ElseIf Operazione = 2 Then
Tst21 = "-"
End If
Ora supponiamo che l'operatore mette 10 ne campo percentuale della maschera
e sceglie l'opzione aumento(+)
avremo
[forms]![MiaMaschera]![percentuale]  =10
[forms]![MiaMaschera]![Tst21]          = +  (non lo riconosce)
listino2=1000
Portando tutto nella query diventa:
Eval(([listino2]*
[forms]![MiaMaschera]![percentuale])/100"[forms]![MiaMaschera]![Tst21]"[list
ino2])
Da errore
Dovrebbe dare come risultato listino2 = 1100
Dove sbaglio ??
Grazie per un tuo prezioso suggerimento.


Ciao Valerio

 Dovrebbe dare come risultato listino2 = 1100
    Facciamolo prima "a manina". Quello che vogliamo ottenere e':
        1000*10/100+1000
giusto? Con risultato:
        1100
    Quindi:
        Eval(StringExpr)
diventera':
        Eval("1000*10/100+1000")
ovvero:
        Eval(1000 & "*" & 10 & "/100" & "+" & 1000)
cioe':
        Eval([listino2] & "*" & [forms]![MiaMaschera]![percentuale] & "/100"
& [forms]![MiaMaschera]![Tst21] & [listino2])


 & [forms]![MiaMaschera]![Tst21] & [listino2])
    ... che puoi anche scrivere:
[listino2]*[forms]![MiaMaschera]![percentuale]/100+Eval([forms]![MiaMaschera
]![Tst21] & [listino2])
-oppure-
        Eval([listino2]*[forms]![MiaMaschera]![percentuale]/100 &



Grazie Maurizio funzionano tutte e due parzialmente se il valore di listino2
è 80,00  90,00 è tutto Ok mentre se il valore è composto da decimali es
80,15 oppure 90,30 da errore, come si spiega tutto ciò?
Vorrei chiederti un consiglio
Nella maschera vorrei mettere un controllo per la percentuale, un gruppo di
opzioni per l'aumento o la riduzione e un gruppo di opzioni per il listino
di input e un gruppo di opzioni per il listino di output.
In base alla percentuale inserita l'operazione scelta (+ o -) si può
aggiornare i listini di output in base a quelli di input.
E' giusta la strada che sto seguendo sapendo di dover utilizzare diversi e
diversi iif oppure esiste come sempre una scorciatoia?
Grazie ancora
Ciao
 Marina

 > > Da errore lo vede come stringa e non funziona
Grazie
Ciao Marina
 >

 diversi iif oppure esiste come sempre una scorciatoia?
    In linea di massima quando gli IIF superano il numero di due e' come
minimo opportuno inventarsela la scorciatoia, se non esiste. Secondo me. ;-)
    Non posso essere sicuro, perche' dovrei avere le idee piu' chiare in
ordine a cio' che intendi fare, ma credo che nel caso che prospetti ci
starebbe bene una funzione Visual Basic costruita da te, coi suoi bravi
parametri, richiamabile da qualsiasi punto della tua applicazione.
