Estoy intentando hacer esto
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
(http://i.imm.io/19eOC.png)
Pero cuando sumo de esta forma 8.000 + 2.000 = 10
(http://i.imm.io/19ePQ.png)
lo que quiero es que al sumar este separa las unidades
(http://i.imm.io/19eT7.png)
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...
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...
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:
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ú...
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
Este funciono a la perfeccion
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
Public Sub Convert_Decimal(ByVal decimalVal As Decimal)
Dim doubleVal As Double
doubleVal = System.Convert.ToDouble(decimalVal)
End Sub
Dim num1 As Double = 2000
Dim num2 As Double = 500
Dim sum As Double = num1 + num2
MsgBox(sum.ToString("0.00"))
Y no es tan sencillo como:
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í:
Format(cantidad, "##,##0.00″)
cantidad.ToString("##,##0.00″)
Aunque bueno si está resuelto, pos ná. :P
Cita de: Ikillnukes en 14 Junio 2013, 07:43 AM
Y no es tan sencillo como:
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".
Anda xD Pues ale, cada día se aprende algo nuevo no? :P
Syntax, pues ponle un Double tal como tenías. :P
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...
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
Cita de: Ikillnukes en 14 Junio 2013, 07:55 AM
JOSJOSJOS!
Capichi? xD Encima to que quiero ayudar, que borde.... :P
Si, muchas gracias?
Oye electro que opinas
Dim value As Double
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
value = TextBox1.Text
TextBox2.Text = (value.ToString("###,###,###,###"))
End Sub
Cita de: SγиtαxEяяoя en 14 Junio 2013, 07:59 AM
Si, muchas gracias?
Oye electro que opinas
Dim value As Double
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
value = TextBox1.Text
TextBox2.Text = (value.ToString("###,###,###,###"))
End Sub
Para formatear
un número está muy bien...si esa es tu intención, pero para sumar no, no puedes sumar strings, y se concatenan en lugar de sumarse.
prueba así:
Public Class Form1
Public Property n1() As Double
Get
Return TextBox1.Text
End Get
Set(ByVal value As Double)
TextBox1.Text = value.ToString("###,###,###,###")
End Set
End Property
Public Property n2() As Double
Get
Return TextBox2.Text
End Get
Set(ByVal value As Double)
TextBox2.Text = value.ToString("###,###,###,###")
End Set
End Property
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox3.Text = FormatNumber(n1 + n2, TriState.False)
End Sub
End Class