Goku ha scritto:
ciao,
se non hai troppi dati in quanto la soluzione proposta potrebbe incidere sulle performance,
una funzioncina dedicata, potrebbe fare al tuo caso, richiamala nella tua query in un campo calcolato.
Public Function ftcCalcolaprezzo(priceToBeChosen As Currency) As Currency
Select Case priceToBeChosen
Case 11 To 100
priceToBeChosen = priceToBeChosen * 0.75
Case 101 To 500
priceToBeChosen = priceToBeChosen * 0.5
End Select
ftcCalcolaprezzo = priceToBeChosen
End Function
ti saluto.
La funzione scritta così, mi lascia tecnicamente perplesso (parlo di perfezionismo e mi permetto l'osservazione a te che ne comprenderai il senso).
In sostanza se omesso il Parametro di una Funzione è ByREF, quindi quello che hai scritto è corretto, nel senso che il Parametro [priceToBeChosen] in ingresso VIENE MODIFICATO... quindi non serve assegnarlo alla Funzione in uscita [ftcCalcolaprezzo]...
Avrei evitato di modificare il valore in ingresso, per il semplice fatto che(ragionando dal punto di vista TEORICO sul come si dovrebbero gestire) in caso di errori con gestione una volta modificato il dato in ingresso non hai poi modo di ripristinarne il valore in uscita... e ti freghi con le tue mani...!
E' sempre meglio, salvo non sia voluta, appoggiarsi ad una Variabile interna... e magari passare ByVAL il parametro... in questo caso più che in altri proprio per la modalità di chiamata...
Faccio un'esempio giusto per chiarire quello che voglio intendere.
Public Function ftcCalcolaprezzo(ByVal priceToBeChosen As Currency) As Currency
On Error Resume Err_Price
Dim mpriceToBeChosen as Currency
mpriceToBeChosen = priceToBeChosen
Select Case priceToBeChosen
Case 11 To 100
mpriceToBeChosen = priceToBeChosen * 0.75
Case 101 To 500
mpriceToBeChosen = priceToBeChosen * 0.5
End Select
ftcCalcolaprezzo = mpriceToBeChosen
Exit_Here:
Exit Function
Err_Price:
' Ripristino il Valore in ingresso
ftcCalcolaprezzo = priceToBeChosen
Resume Exit_Here
End Function