PDA

View Full Version : VB e MS Access


PCOCCO
28-02-2005, 10:36
Ciao ragazzi ho un cruccio stupido per voi da sottoporvi.
In Access ho creato una maschera con quattro elementi
3 caselle di testo
1 combinata con quattro valori "somma", "differenza", "prodotto" e "divisione"
1 pulsante.
Sto cercando di fare la più grande idiozia penzabile cioè
premendo il pulsante in una delle caselle deve comparire il risultato dell'operazione specificata dalla combo con argomenti il contenuto delle altre due caselle.

Volevo vedere come si potesse realizzare usando due routine in VB con passaggio di parametri, ho scritto questo codice ma il compilatore mi dà sempre un errore!

Private Sub Calcola(a, b, c)
Select Case c
Case somma
Casella03.Value = a + b
Case differenza
Casella03.Value = a - b
Case prodotto
Casella03.Value = a * b
Case divisione
Casella03.Value = a / b
End Select
End Sub



Private Sub PulsanteCalcola_Click()
With Form_Prova
Calcola(Casella01.Value,casella02.Value,CombinataOperatore.Value)
End With
End Sub

Cosa sbaglio???

Grazie Paolo

akyra
28-02-2005, 11:07
magari se scrivi che errore ti da si riesce ad isolarlo ed analizzarlo...
comunque quello che tu vorresti fare è una cosa del genere:

Assumiamio che si voglia eseguire la somma di due numeri inseriti in 2 caselle di testo, e riportare il risultato in un'altra casella (dichiarate tutte come "formato=Numero Generico"). Alla pressione di un pulsante si esegue la somma:


Private Sub Comando6_Click()
Forms![Maschera1].Testo4 = Forms![Maschera1].Testo2 + Forms![Maschera1].Testo0
End Sub


Naturlamente io qui ho solo preso il caso della somma, ma puoi aggiungere altre operazioni con il costrutto "case".
dovrebbe essere una cosa così, giusto? oppure vuoi per forza usare una funzione esterna all'interno dell'evento "click" ?

PCOCCO
28-02-2005, 11:14
[B]
...
oppure vuoi per forza usare una funzione esterna all'interno dell'evento "click" ?

Esattamente, voglio capire come avviene il passaggio dei parametri fra le routine!
Questo è uno screenshoot della situazione!

PCOCCO
28-02-2005, 11:16
Ops

akyra
28-02-2005, 11:33
Lino Banfi direbbe "....Maronn Santissima dell'Incoronéta!!!!"

hai sbagliato sintassi, la forma giusta è questa:


Private Sub Calcola(a, b)
Forms![Maschera1].Testo4 = a + b
End Sub

Private Sub Comando6_Click()
Calcola Forms![Maschera1].Testo0, Forms![Maschera1].Testo2
End Sub


come puoi vedere quello che ho fatto è creare un evento "click" sul "Comando6" che passa i parametri alla funzione "Calcola", la quale modifica il contenuto della casella di testo "Testo4" (sempre nella "Maschera1") assegnandogli il risultato della somma.
Ho preso il mio esempio per spiegarti cos'hai sbagliato (Le chiamate a funzioni "sub" devono avvenire senza parentesi tonda).


P.S. naturalmente se avessi voluto fare una funzione che Restituisce il valore della somma, avresti dovuto scrivere una "Function" non una "Sub", in quanto solo le Function possono restituire valori, invece le "Sub" sono delle procedure senza valore di ritorno. La restituzione del valore avviene assegnado al nome della funzione in questione il valore da ritornare, esempio:


Option Compare Database
Private Function Calcola(a, b)
Calcola = a + b
End Function


Private Sub Comando6_Click()
Dim risultato As Long
Forms![Maschera1].Testo4 = Calcola(Forms![Maschera1].Testo0, Forms![Maschera1].Testo2)

End Sub


capito?
Spero di esserti stato utile.

PCOCCO
28-02-2005, 11:55
Grazieeeeeeeee

Miiii che stupidata io sono abituato al Delphi e davo per scontate le parentesi, che idiota

grazie mille ancora.
Paolo

akyra
28-02-2005, 11:58
Originariamente inviato da PCOCCO
Grazieeeeeeeee

Miiii che stupidata io sono abituato al Delphi e davo per scontate le parentesi, che idiota

grazie mille ancora.
Paolo

lo so che è un po' un pacco, infatti quando si è abituati con un linguaggio, distaccarsi dalla sintassi è il primo problema da superare...comunque fa attenzione che le parentesi non sono da mettere solo in caso di chiamata ad una "Sub", invece sono da mettere se fai una chiamata a "Function"...
felice di esserti stato d'aiuto ;)
ciao!

PCOCCO
28-02-2005, 12:03
:) :) :)