Sumar dos Textbox

Iniciado por SγиtαxEяяoя, 13 Junio 2013, 20:40 PM

0 Miembros y 1 Visitante están viendo este tema.

SγиtαxEяяoя

Estoy intentando hacer esto

Código (vbnet) [Seleccionar]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text)
   End Sub




Pero cuando sumo de esta forma  8.000 + 2.000 = 10



lo que quiero es que al sumar este separa las unidades


SγиtαxEяяoя

Encontre algo como esto

CitarPrivate Sub cmdactualizar_Click()
'total = Val(valor1) + Val(valor2) + Val(valor3) + Val(valor4) + Val(valor5) + Val(valor6) + Val(valor7) + Val(valor8)

'valor1 = Mid(txtpeajescelco, 2, Len(txtpeajescelco)) ' captamos el valor de txt1 a partir de "$"
'valor2 = Mid(txtpeajesotros, 2, Len(txtpeajesotros)) ' captamos el valor de txt2 a partir de "$"

'valor1 = Replace(valor1, ",", "") ' borramos las comas de valor1
'valor2 = Replace(valor2, ",", "") ' borramos las comas de valor 2

total = Val(valor1) + Val(valor2)
'txttotal = Format(total, "#,#0.00")

txttotal.Text = Format(total, "#,##0.00")
'no importa que aparezca el signo de dinero "$#,##0.00"
End Sub

Private Sub txtpeajescelco_Change()
valor1 = Format(txtpeajescelco.Text, "#,#0.00")
End Sub

Private Sub txtpeajescelco_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys "{tab}"
valor1 = Format(txtpeajescelco.Text, "#,#0.00")
txtpeajescelco.Text = valor1
End If
End Sub

Private Sub txtpeajescelco_LostFocus()
valor1 = Format(txtpeajescelco.Text, "#,#0.00")
txtpeajescelco.Text = valor1
End Sub

Private Sub txtpeajesotros_Change()
valor2 = Format(txtpeajesotros.Text, "#,#0.00")
End Sub

Private Sub txtpeajesotros_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys "{tab}"
valor2 = Format(txtpeajesotros.Text, "#,#0.00")
txtpeajesotros.Text = valor2
End If
End Sub

Private Sub txtpeajesotros_LostFocus()
valor2 = Format(txtpeajesotros.Text, "#,#0.00")' no importa el signo dinero
txtpeajesotros.Text = valor2
End Sub
Bueno en tiempo de ejecucion ingreso los datos en las respectivas cajas de texto me aparece asi:
text1
1.000,00
text2
1.000,00
pero en la suma
aparece
2,00
no suma los valores después del punto, o sea toma por defecto los valores en unidad...

Saberuneko

Creo que lo que te ocurre es que está tomándose el punto como una coma, interpretando tus números como 8+2.

Para poder meter de por medio los puntos, supongo que tendrías que trabajar con cadenas...

No recuerdo muy bien como tiraba todo ahora mismo, así que no sé decirte ahora mismo...

Eleкtro

#3
Como te han dicho, ese es el problema.

Al formatear el número se convierte a decimal, y los ceros a la derecha de la coma se eliminan,
Es decir, cuando escribes "2.000", se formatea a "2,000", y eso se representa como un "2" al ser Entero, y eso es lo que sumas, el "2".

¿Verdad que si escribes en los textboxes "2.001" si que te funciona corréctamente?

En fin debes manejar los tipos de números "Double" al sumar ese tipo de números:

Código (vbnet) [Seleccionar]
TextBox3.Text = FormatNumber(Convert.ToDouble(TextBox1.Text) + Convert.ToDouble(TextBox2.Text), TriState.False)

PD: Primero debes detectar si el string contiene puntos o comas para manejar el resto de números como "Long" (aka Int64) :)

Saludos.


EDITO:

No es perfecto, si intentas sumar "2.00" se reconoce como "200", pero bueno, solo es para mostrarte, eso ya lo mejoras tú...

Código (vbnet) [Seleccionar]
Public Class Form1

    Dim num1 As Object
    Dim num2 As Object

    Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        If sender.Text.Contains(".") Then _
             num1 = Convert.ToDouble(sender.Text) _
        Else num1 = Convert.ToInt64(sender.Text)
    End Sub

    Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
        If sender.Text.Contains(".") Then _
             num2 = Convert.ToDouble(sender.Text) _
        Else num2 = Convert.ToInt64(sender.Text)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox3.Text = FormatNumber(num1 + num2, TriState.False)
    End Sub

End Class








SγиtαxEяяoя

#4
Este funciono a la perfeccion

Código (vbnet) [Seleccionar]
TextBox3.Text = FormatNumber(Convert.ToDouble(TextBox1.Text) + Convert.ToDouble(TextBox2.Text), TriState.False)

y si lo quiero pasar a un decimal debo usar de esta manera

Código (vbnet) [Seleccionar]
Public Sub Convert_Decimal(ByVal decimalVal As Decimal)

       Dim doubleVal As Double

       doubleVal = System.Convert.ToDouble(decimalVal)
End Sub


Código (vbnet) [Seleccionar]
Dim num1 As Double = 2000
Dim num2 As Double = 500
Dim sum As Double = num1 + num2

MsgBox(sum.ToString("0.00"))



z3nth10n

#5
Y no es tan sencillo como:

Código (vbnet) [Seleccionar]
Dim textbox1 As String = textbox1.text
Dim textbox2 As String = textbox2.text
Dim resultado As Integer = textbox1 + textbox2


no?

No lo he probado pero se suponeq eu tiene que funcionar. :P

Un saludo.

PD: No había leido el formato numérico. :P

Encontre esto por ahí:

Código (vbnet) [Seleccionar]
Format(cantidad, "##,##0.00″)
cantidad.ToString("##,##0.00″)


Aunque bueno si está resuelto, pos ná. :P

Interesados hablad por Discord.

Eleкtro

Cita de: Ikillnukes en 14 Junio 2013, 07:43 AM
Y no es tan sencillo como:

Código (vbnet) [Seleccionar]
Dim textbox1 As String = textbox1.text
Dim textbox2 As String = textbox2.text
Dim resultado As Integer = textbox1 + textbox2


no?

No, por esta razón:
Cita de: EleKtro H@cker en 13 Junio 2013, 20:58 PMEs decir, cuando escribes "2.000", se formatea a "2,000", y eso se representa como un "2" al ser Entero, y eso es lo que sumas, el "2".

Si lo declaras como entero se eliminan los ceros de la derecha, y "2.000" pasa a ser un simple "2".








z3nth10n

Anda xD Pues ale, cada día se aprende algo nuevo no? :P

Syntax, pues ponle un Double tal como tenías. :P

Interesados hablad por Discord.

SγиtαxEяяoя

Cita de: Ikillnukes en 14 Junio 2013, 07:53 AM
Anda xD Pues ale, cada día se aprende algo nuevo no? :P

Syntax, pues ponle un Double tal como tenías. :P

Creo que se me olvido decir, QUE YA ESTA RESUELTO...

z3nth10n

Cita de: SγиtαxEяяoя en 14 Junio 2013, 07:54 AM
Creo que se me olvido decir, QUE YA ESTA RESUELTO...


JOSJOSJOS!

CitarAunque bueno si está resuelto, pos ná. :P

Capichi? xD Encima to que quiero ayudar, que borde.... :P

Interesados hablad por Discord.