Newsgroup: it.comp.appl.access
Titolo: Il risultato di una Funzione

Ragazzi che ignoranza!...
Non ho mai usato una Function.
All'interno del modulo di una Form ho scritto un bel pò di codice.
Ad un certo punto, per rendere più chiara la "manutenzione" di questo codice
richiamo una funzione chiamata TariffaBase.
Scrivo questa lunghissima Public Function TariffaBase() all'inizio del
modulo.
Al termine di questa funzione scrivo TariffaBase = Valore1 + Valore2 +
Valore3 etc
Terminata la funzione, ed ottenuto il risultato il codice va sul punto
successivo a dove ero rimasto
cioè la chiamata della funzione.
Mi aspetto di trovare il risultato ottenuto puntando col mouse sul nome dell
funzione....
Invece... niente. Che domanda stupida!
Come faccio a farmi "dire" il risultato ? Ho provato con un interrogatorio
di 6 ore, le torture, ma niente!
Non me lo dice!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Non me lo dice!
Se il tuo intento č quello di conoscere il valore di ritorno della funzione 
durante un'operazione di debug, allora puoi agire in diversi modi.
Ad esempio, eseguendo il codice passo passo, quando arrivi all'attribuzione 
del valore di ritorno (TariffaBase = Valore1 + ......), ti fermi all'istruzione 
successiva (che dovrebbe essere End Function) e posizioni il cursore sopra 
la parola "TariffaBase" presente alla riga precedente. Nel tooltip dovresti 
poter leggere il valore che cerchi.
Se invece il tuo problema č che il valore calcolato non viene ritornato, 
allora facci capire meglio il contenuto di questa funzione.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it
skype: pbsoftsolution

marioP ha scritto:

La devi assegnare ad una variabile...!
Dim lngRet as Long
lngRet=TariffaBase()
ora in lngRet hai il valore usabile, a meno di errori nella Function.
Per testare se funziona io uso un MsgBox NomeFunzione() oppure il Debug
con un BreackPoint nella Function
Ciao
@Alex

 lngRet=TariffaBase() ????????
 
Non è che non ho messo le parente


 Non è che non ho messo le parente
Non saprei cosa dire, se posti la Funzione possiamo vedere...!
@Alex

 Inviato via 
http://arianna.libero.it/usenet/
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it


1) IN un Modulo A PARTE necessariamente?
2)In questo caso il codice del Button è gia in funzione da un pezzo...
è all'interno di questo codice che richiamo la function (che è nello stesso
modulo ma in disparte
per non fare confusione).
Domanda:
All'interno della Function, a seconda dei vari IF, vi sono diversi risultati
restituiti:
per esempio:
If Pippo > Pluto then
         TariffaBase= Val1 + Val2
ElseIf Pippo < Pluto
         TariffaBase= Val3+ Val4
end if
Insomma il risultato dipende dal punto in cui decido di uscire
dalla Function e catturare il risultato che m'interessa.
Per esempio
If Pippo > Pluto then
         TariffaBase= Val1 + Val2
end if
Exit Function oppure GOTO FineFunction
E' un problema? Non credo!!!!!!!
 
 3) E' una questione di inserire argomenti tra le parentesi?
Quando l'ho dichiarata come Public Function TariffaBase()
non vi era nessun argomento quindi....
Ho esaurito le ipotesi e le risorse...Non so che pensare


 1) IN un Modulo A PARTE necessariamente?
No non è necessario, è solo un modo.
Visto che il problema potrebbe essere la Function credo che l'unica sia
Postarla
per intero altrimenti stiamo solo facendo "supposte" e con questo caldo
la glicerina
si scioglie velocemente.
@Alex

 Inviato via 
http://arianna.libero.it/usenet/
-- 



Scusa Alex, ma la function è un romanzo tipo I Promessi sposi...Non vorrei
Therdiarti.
semmai il problema sta nel modo in cui la function passa il risultato al
codice originario.
Riperto, Io leggo il risultato di TariffaBase al termine della Funzione ma
non me lo ritrovo...
(e questo si era capito...)
Ti mando l'ultima parte
......Codice Originario attivato da Button......
........................................................................
TariffaBase ' Chiama la Funzione che è scritta all'inizio del modulo
Public Function TariffaBase()
....................................................
Set ctl = Me.Arrivo ' E' la ListBox
Dim val0, val1, val2, val3, val4, val5 as integer
 
 For Each VociElenco In ctl.ItemsSelected
            If ctl.Column(1, VociElenco) = "d0" Then
            Val0 = rsTBase!EuroT_Base 'Restituisce Euro TariffaBase in base a
descrizioni
  ElseIf ctl.Column(1, VociElenco) = "d2" Then
 
      Val2 = rsTBase!EuroT_Base2
 
  ElseIf ctl.Column(1, VociElenco) = "d3" Then
 
      Val3 = rsTBase!EuroT_Base3
 
   ElseIf ctl.Column(1, VociElenco) = "d4" Then
 
      Val4 = rsTBase!EuroT_Base4
 
   ElseIf ctl.Column(1, VociElenco) = "d5" Then
 
      Val5 = rsTBase!EuroT_Base5
   End If
 
 Next VociElenco
 TariffaBase = Val0 + Val1 + Val2 + Val3 + Val4 + Val5 (Leggo il risultato =
800)
GoTo FineFunction
..............................................
.................................................
FineFunction
End Function
          Nel codice di Button eravamo rimasti a:
TariffaBase (se punto il mouse non leggo niente.)
                            se inserisco:
Dim RisultatoTariffaBase As Integer
RisultatoTariffaBase = TariffaBase (Non legge niente e torna alla funzione)
Questo 3D è diventato un imponente Loop


 800)
qui e' dura che ti ritorni qualcosa. Strano che non va' in errore
Per gli integer il defaulto e' 0 per i variant e' null
--
ac

Alessandro Cara wrote:
P.S.
Inoltre per come e' fatta la funzione non hai bisogno di val1,....., 
valN. Ti e' sufficiente una sola variabile
--
ac

Effettivamente finora non ne ho fatto niente!
Mi aspettavo intanto di leggerla puntandoci su con il mouse
Successivamente, dopo qualche Do...Loop
chiamerò un altra Funzione TariffaPLUS.
Al termine della routine avviata con Button
avrò un Totale = TariffaBase + TariffaPlus
Ho provato anche:
TariffaBase (Chiamata della Funzione)
Msgbox TariffaBase() (Che fa? Torna alla funzione come se la stessi
richiamando)



A proposito di dichiarazioni... Non ho detto a TariffaBase che tipo è
quindi è un Variant. Potrebbe nascere qui qualche problema?
Innescato dai Variant / Integer di val 1 val2 ?
Il risultato me lo dà senza errori...


 Il risultato me lo dà senza errori...
?
Function MyFunz()
	MyFunz = "x"
	msgbox Myfunz()
         ' nun se po fa'.  E' una chiamata ricorsiva
         msgbox MyFunz
         'forse se po' fa
end function
--
ac


Ragazzi ragazzi ragazzi
Che idiozia Che idiozia Che idiozia
l'errore stava nel fatto che mettevo nel codice il NomeFunzione
e successivamente cercavo di assegnare il risultato ad una variabile.
Cioè scrivevo:
Codice codice codice
.........................................
TariffaBase
VarRisultatoTariffaBase= TariffaBase
a questo punto il codice rieseguiva la Funzione in quanto in effetti la
chiamavo 2 volte.
Invece ho scritto:
Codice codice codice
.........................................
VarRisultatoTariffaBase = TariffaBase (la chiamo una volta sola)
e addirittura
VarRisultatoTariffaBase = TariffaBase+TariffaPlus (e la variabile
restituisce la somma di 2 funzioni)
Era come se io chiamassi al telefono: "Ciccio!!! Vieni qua", Ciccio veniva e
io gli dicevo
"Adesso che sei venuto vai a comprarmi 4 uova".
E lui rispondeva: "Non me le potevi dire al telefono che te le portavo
mentre venivo? Adesso mi tocca andarmene di nuovo e torna qui!..."


 mentre venivo? Adesso mi tocca andarmene di nuovo e torna qui!..."
Non proprio; era come se chiamassi al telefono: "Ciccio!!! Vieni qua", lui 
veniva e tu gli ri-telefonavi e gli dicevi: "Ciccio!!! Vieni qua", lui 
veniva e tu gli ri-telefonavi e gli dicevi: "Ciccio!!! Vieni qua", lui 
veniva e tu gli ri-telefonavi e gli dicevi: "Ciccio!!! Vieni qua", etc. 
etc...
In parole povere; la funzione viene eseguita ogni volta tu la chiami (anche 
al telefono)...
Ciao.
-- 
Sergio MAZZA 

 > Cioč scrivevo:

Ah Ah Ah! Si č quasi cosě ...Ma non proprio:
infatti quando ho messo il MsgBox suggeritomi da Alessandro Baraldi
mi sono accorto che la seconda volta "Ciccio" le uova me le ha portate!
Cioč la funzione ha restituito il suo valore ma la seconda volta!
E' stato cosě che ho capito...
(probabilmente avrebbe continuato a portarmi uova all'infinito...Colesterolo
a 1000!)
