Newsgroup: it.comp.appl.access
Titolo: Like  Ricerca Obiettivo di Excel ?

Buongiorno Ng!
Sto cercando di capire, e chiedo un parere anche a voi , se è
possibile
realizzare in Access una funzione tipo "" Ricerca Obiettivo"" di
Excel.
Per chi non la conoscesse, la funzione riparametra un valore qualsiasi
delle celle collegate tra loro con delle formule.
In sostanza , avendo 3 celle del tipo
numeropatate: 1000
prezzo unitario: 10
totalespesa: 1000 (10.000 x 10)
sconto: 20
prezzounitariopatatadoposconto: 8
totalenetto: 8.000 ( totalespesa - sconto)
Ma se io dovessi decidere di applicare un forfait e far pagare 7.500
basta dire a Ricerca Obiettivo di cambiarmi il valore corretto dello
sconto
dato il valore 7500.
Quindi mi troverebbe  e cambierebbe il valore delle celle
sconto:25
prezzounitariopatatadoposconto:7,5
E' una funzione che uso spesso in excel per trovare valori inversi
senza dover procedere per tentativi.
Al momento lo faccio in due record separati e posso andare avanto
cosi' senza problemi.
Ma mi chiedevo: sarà mai possibile in Access cambiare temporaneamente
il comportamento di campi calcolati e che quindi che contengono già
una formula specifica?
Qualcuno di voi lo fa gia?
Buon lavoro a tutti
Grazie dei pensieri in merito a chi volesse.
Eddie


Nativo non esiste,
c'è da implementare una funzione
-- 
-- 
MAssimiliano Amendola
www.accessgroup.it
Cisa - Conferenza Italiana Sviluppatori Access

 ha scritto nel messaggio 
news:78f9b12a-89d5-48a4...@y22g2000prd.googlegroups.com...


 Eddie
Eureka!!!!..Mi sono messo di buzzo buono e sono riuscito. Tutto via
VBA, senza
utilizzare campi calcolati che avrebbero complicato il processo.
Adesso riesco , digitando un valore diverso nel campo " TotaleNetto" a
riparametrare i valori
con 2 varianti;
Una volta giunto nell'ultimo campo "" TotaleNetto" , modifico il
valore e ...
1) Nel caso decida di  modificare lo sconto "" Me.BloccoSconto = False
"" ( campo tabella Si/No ) , mi riparametra
    esclusivamente lo sconto applicato
2) Nel caso non possa modificare lo sconto "" Me.BloccaSconto = True
"" va a riparametrare la Quantità che posso offrire
    senza alterare il costo unitario.
Sostanzialmente un "Cerca Obiettivo" di Excel molto, ma mooooolto più
veloce :-)
PS. Totale viene aggiornato, via VBA, su AfterUpdate di PrezzoUnitario
(PrezzoUnitario x Quantità) ; TotaleNetto su  AfterUpdate
       di Sconto ( Totale - Sconto)
Ma volendo ottomizzare il codice succede che , se uso il codice in
questo modo...
(1)
Private Sub TotaleNetto_AfterUpdate()
If Me.Totale <> ((Me.Totale / 100) * (100 - Me.Sconto)) And
Me.BloccoSconto = False Then
' se il TotaleNetto che sto digitando è diverso da quello che dovrebbe
essere quello calcolato dai campi e il controllo BloccoSconto
è impostato a False'
Me.Sconto = (100 - (Me.TotaleNetto / Me.Totale) * 100)
' ricalcola lo sconto effettivo dividendo il nuovo importo per il
costo a listino)
Me.Sconto.SetFocus
End If
If Me.Totale <> ((Me.Totale / 100) * (100 - Me.Sconto)) And
Me.BloccoSconto = True Then
' se il TotaleNetto che sto digitando è diverso da quello che dovrebbe
essere quello calcolato dai campi e il controllo BloccoSconto
è impostato a True'
Me.Totale = Me.TotaleNetto / 100 * ((100 + Me.Sconto) + (100 -
Me.Sconto))
' ricalcola il Totale mantenendo lo sconto inserito'
Me.Quantità = Me.Totale / Me.PrezzoUnitario
' e dimmi quante Quantità posso offrire al prezzo concordato,senza
aumentare lo sconto'
Me.Sconto.SetFocus
End If
End Sub
...tutto è perfetto.
Ma se cerco di ottimizzare il codice creando delle variabili , per
semplificazioni future, il tutto non funge.
Ad un primo riscontro sembra non riconoscere il valore ""
BloccoSconto" ...come mai e dove sbaglio?
(2)
Private Sub TotaleNetto_AfterUpdate()
Dim t, tn, s, q, bs, pu As Variant
t = Me.Totale
tn = Me.TotaleNetto
s = Me.Sconto
q = Me.Quantità
pu = Me.PrezzoUnitario
bs = Me.BloccoSconto
If t <> ((t / 100) * (100 - s)) And bs = False Then
s = (100 - (tn / t) * 100)
Me.Sconto.SetFocus
End If
If t <> ((t / 100) * (100 - s)) And bs = True Then
t = tn / 100 * ((100 + s) + (100 - s))
q = t / pu
Me.Sconto.SetFocus
End If
End Sub
Grazie a chi vorrà intervenire.
Ps.Il  codice (1) postato è funzionante e corretto nella forma e nella
sintassi. Per chi volesse implementare una funzione
del genere basta fare un copia/incolla, rispettando gli AfterUpdate
come indicato e modificando solo il nome dei controlli.
Un piccolo, modesto, contributo ( se mai fosse utile)  a tutto quello
che attraverso di voi e al vostro tempo dedicato a questo ng , ho
imparato.
Aspetto dei vs pareri. Io non riesco a trovare fidderenza tra 1 e
2 ...ma forse sono troppo stanco per vederlo..:-))
Eddie