PDA

View Full Version : [VB] Calcolo IVA e alcuni consigli


andreaxol
29-01-2004, 01:13
Ciao a tutti :)

Dovrei calcolare + 20% + 20% di un dato numero...mi direste come verrebbe il codice?

Non ho ancora ben assimilato il VB e quando devo mettere giù un calcolo non ci riesco...probabilmente non ho delle buone basi di matematica o non ho la testa per programmare.

Sapreste dove reperire sul web esempi di codice con le più comuni operazioni e funzioni matematiche (dal +-*: media, alle incognite e cose più serie) da applicare in VB?

Anche una guida per zucconi come me sarebbe ben accetta! (me la cavo con l' HTML, ma con VB e PHP nada...)

Grazie :)

cionci
29-01-2004, 01:48
prezzo = prezzo * 1.2

andreaxol
29-01-2004, 16:27
Grazie :)

Questo nel caso dell' iva al 20%.

Da che calcolo esce 1,2?

Io dovrei fare il 20% di un dato prezzo e il risultato ancora + 20%

Scusa la mia ignoranza

cionci
29-01-2004, 18:56
Il 20% di un prezzo è pari al prezzo moltiplicato per 0,20...

Quindi aggiungere il 20% al prezzo significa:

prezzo + prezzo * 0,20 = prezzo * (1 + 0.20) = prezzo * 1.20...

Pre aggiungere 20% e poi un altro 20% semplicemente si rimoltiplica per 1.2 ;)

andreaxol
29-01-2004, 19:42
Originariamente inviato da cionci

Pre aggiungere 20% e poi un altro 20% semplicemente si rimoltiplica per 1.2 ;)



In effetti :p

+20% (*1,2) +20%(*1,2) è diverso da +40% (*1,4) vero?


Conosci sul web qualche guida facile facile sul VB che spieghi anche le nozioni fondamentali della programazione (array, cicli ecc...)?

Grazie :)

cionci
29-01-2004, 19:48
Originariamente inviato da andreaxol
+20% (*1,2) +20%(*1,2) è diverso da +40% (*1,4) vero?

Chiaro...

prezzo * 1.2 * 1.2 è diverso da prezzo * 1.4...

Infatti prezzo * (1.2 * 1.2) = prezzo * 1.44 ;)

andreaxol
29-01-2004, 23:42
Mi sapresti dire come implementare nel textbox il raggruppamento in cifre? (es. 1.000 anzichè 1000)

Grazie

matpez
30-01-2004, 00:21
Originariamente inviato da andreaxol
Mi sapresti dire come implementare nel textbox il raggruppamento in cifre? (es. 1.000 anzichè 1000)

Grazie



Private Sub Text1_Change()

Text1 = Format$(Text1, "#,###")
Text1.SelStart = Len(Text1)

End Sub

andreaxol
30-01-2004, 00:29
Originariamente inviato da matpez

Private Sub Text1_Change()

Text1 = Format$(Text1, "#,###")
Text1.SelStart = Len(Text1)

End Sub


Il mio codice è il seguente:

Private Sub cmdCalcola_Click()

txt20.Text = Round(txtInserDati.Text * 1.44, 2)
txt15.Text = Round(txtInserDati.Text * 1.38, 2)
txtDiff.Text = Round(txt20.Text - txt15.Text, 2)

End Sub


Come verrebbe, applicando quello che hai postato?

Grazie :)

matpez
30-01-2004, 12:57
Io pensavo che a te servisse una text box che quando premevi mettevi una cifra ti faceva il separatore :)

Se tu indenfi il raggruppamento alla pressione del tasto (dopo che ti ha fatto il calcolo) basta che fai così:

Private Sub cmdCalcola_Click()

txt20.Text = Round(txtInserDati.Text * 1.44, 2)
txt15.Text = Round(txtInserDati.Text * 1.38, 2)
txtDiff.Text = Round(txt20.Text - txt15.Text, 2)
txtDiff= Format$(txtDiff, "#,###")
End Sub


Se è la txtDiff che ti interessa modellare...

andreaxol
30-01-2004, 13:23
Io inserisco i dati nel txtInserDati e vorrei che si veda il separatore durante la "battitura" dei numeri. Poi quando clicco nel cmdcalcola vorrei il separatore anche nel txt15, txt20 e txtDiff

Scusa se non mi sono spiegato bene e grazie per l' aiuto!

matpez
30-01-2004, 13:58
Ora si che è tutto chiaro!

Fai così:


Private Sub txt20_Change()

txt20= Format$(txt20, "#,###")
txt20.SelStart = Len(txt20)

End Sub

Private Sub txt15_Change()

txt15= Format$(txt15, "#,###")
txt15.SelStart = Len(txt15)

End Sub

Private Sub txtDiff_Change()

txtDiff= Format$(txtDiff, "#,###")
txtDiff.SelStart = Len(txtDiff)

End Sub

andreaxol
30-01-2004, 14:04
Grazie :)

Ma la funzione round che fine fa?

matpez
30-01-2004, 16:09
Quanto sai di VB ?

Scusa pensavo che qlcina sapevi, mi sono espresso male :)

La parte di codice che hai messo tu nel comando _Click devi lasciarli li dov'è! Perchè tanto la formattazione viene fatta in un altro evento :D

Al massimo fai questa modifica:

Private Sub cmdCalcola_Click()

txt20.Text = Round(val(txtInserDati.Text) * 1.44, 2)
txt15.Text = Round(val(txtInserDati.Text) * 1.38, 2)
txtDiff.Text = Round(val(txt20.Text) - val(txt15.Text), 2)
End Sub

andreaxol
31-01-2004, 08:48
Grazie :)

Ultima cosa, poi basta :)

Come si fa tramite cmdbutton a far aprire un' altra finestra?

Per fare in modo che all' inserimento di 0 o di una lettera, compaia la scritta "inserisci solo numeri positivi"? (o una frase più sensata :D)

matpez
31-01-2004, 10:33
Ti ho fatto l'esempio...devi solo adattarlo!

Questo esempio nn permette l'inserimenti si altre cose tranne i numeri dallo 0 al 9, per cui niente simbolo -, niente caratteri, niente di niente!

andreaxol
31-01-2004, 13:29
Non me ne ero accorto...

Come avrai capito non sono un' aquila in VB :p

Grazie per l' aiuto :)

matpez
01-02-2004, 01:38
Prego, di nulla :p

andreaxol
02-02-2004, 12:36
Se non ti dispiace, ti chiederei ancora due cose...

C' è un modo per allineare i numeri a destra del text box? Viene più comodo quando bisogna cancellare.

Nel codice non si potrebbe implementare una funzione invece di fare un evento change per ogni text box?

Grazie :)

matpez
02-02-2004, 13:27
Originariamente inviato da andreaxol
C' è un modo per allineare i numeri a destra del text box? Viene più comodo quando bisogna cancellare.


Si certo...nelle proprietà della textbox c'è appunto la voce Allignamento


Originariamente inviato da andreaxol
Nel codice non si potrebbe implementare una funzione invece di fare un evento change per ogni text box?



Si certo anche questo, cioè per spiegarmi meglio, nn puoi evitare l'evento change di una textbox..perchè altrimenti nn saresti nella programmazione guidata dagli eventi (come VB)!

Però per evitare la ripetizione di codice uguale puoi fare una cosa del genere:


Private Sub Text1_Change()

Call bho(Text1)

End Sub

Private Sub bho(ByVal txtAux As TextBox)

txtAux = Format$(txtAux, "#,###")
txtAux.SelStart = Len(txtAux)

End Sub

andreaxol
02-02-2004, 17:25
Questo è riferito all mio codice (txtInserDati, txt15, txt20, txtDiff) o è un esempio fittizio?

matpez
02-02-2004, 17:47
Devi mettere la funzione "bho" in tutti gli eventi change delle text dopra riportate! :p

andreaxol
02-02-2004, 17:55
Non è che conosci una guida semplice per chi si avvicina al VB, che spiega le cose fondamentali ?

:p

matpez
02-02-2004, 18:13
Prova a vedere se questo ti garba:

http://programmazione.html.it/visualbasic/index.html

andreaxol
02-02-2004, 23:21
Originariamente inviato da matpez
Prova a vedere se questo ti garba:

http://programmazione.html.it/visualbasic/index.html

Grazie, corro a leggere :)

matpez
03-02-2004, 01:18
Dimmi se ti piace...

andreaxol
04-02-2004, 00:58
Ho letto le prime cose e sembra ottima per un neofita come me

Non mi resta che leggerla tutta (lunghina!) :p


Grazie di nuovo