Visual Basic.NET - Ayuda !! decimales en textbox

 
Vista:
Imágen de perfil de luisao
Val: 60
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por luisao (27 intervenciones) el 06/06/2020 00:25:29
buenas tardes estimados,

Estoy realizando un proyecto de la universidad y la verdad no se como pasar este textbox a decimal de solo 2 digitos despues del punto.

en SQL el campo lo tengo como MONEY

por favor espero sus comentarios.

saludos.


Captura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por Phil Rob (843 intervenciones) el 06/06/2020 08:31:03
Hola,

Tienes que ver los parametros de String.Format.

Ejemplo :
1
2
3
Dim MiFloat As Double = "123.456"  ' MiFloat debe ser numerico real para le formato siguiente
' Para mostrar 2 decimales y mínimo 3 enteros  (si no 3 números, caracteres blancos  están puestos)
UnaTextBox.Text = String.Format("{0:##0.00}", MiFloat)

Espero que este te ayudará ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de luisao
Val: 60
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por luisao (27 intervenciones) el 07/06/2020 06:45:54
gracias por tu respuesta pero no me resulto, sigue igual.

no entiendo porque no me funciona, ya he intentado varias formas e investigado y siempre aparece igual cuando corro el programa, y el problema es que todo eso lo sumo en textbox de TotalNeto y me sale una suma erronea.

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por Phil Rob (843 intervenciones) el 07/06/2020 09:35:03
Hola,

Veo que probablemente copias una Cell de DataGriView en la TextBox. Si este es le caso, ejecutas el formato sobre un tipo String pero para String.Format, el tipo debe ser numérico.

Envias me tu código, este que utilizas para hacer el formato, o todo el código de este Form.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de luisao
Val: 60
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por luisao (27 intervenciones) el 07/06/2020 20:19:45
buens tardes amigo,
asi es, el textbox lo tengo enlazado o igualado a una celda del datagrid.

te enviare el codigo, muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
Imports System.Data.SqlClient
Imports System.IO
Public Class FrmFacturas
    Public CN As New SqlConnection(My.Settings.Conexion)
    Public CF As New ClsFactura
    Private Sub FrmFacturas_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        ControlBotones()
 
        Randomize()
        Dim R As Integer
        R = Rnd() * 1000
        TxtNumFact.Text = R
 
    End Sub
 
    Public Sub Totales()
        Dim st, isv, t As Double
        st = CDbl(TxtPrecio.Text) * CDbl(TxtCantidad.Text)
        TxtSubTotal.Text = st
        isv = CDbl(TxtSubTotal.Text) * 0.15
        TxtIsv.Text = isv
        t = CDbl(TxtSubTotal.Text) + CDbl(TxtIsv.Text)
        TxtTotal.Text = t
    End Sub
 
    Private Sub TxtCantidad_Leave(sender As Object, e As EventArgs) Handles TxtCantidad.Leave
        If TxtCantidad.Text >= 1 Then
            Totales()
        Else
            MsgBox("Ingrese Cantidad")
        End If
    End Sub
 
    Public Sub ControlBotones()
        TxtCodEmp.Enabled = False
        TxtNumFact.Enabled = False
        BdpFecha.Enabled = False
        TxtCodCli.Enabled = False
        TxtNombreCli.Enabled = False
        TxtIdentidad.Enabled = False
        TxtRTN.Enabled = False
        BtnQuitarCliente.Enabled = False
        TxtCodRep.Enabled = False
        TxtDescripcion.Enabled = False
        TxtPrecio.Enabled = False
        TxtCantidad.Enabled = False
        TxtSubTotal.Enabled = False
        TxtIsv.Enabled = False
        TxtTotal.Enabled = False
        BtnQuitarRepuesto.Enabled = False
        BtnAgregarRepuesto.Enabled = False
        BtnGuardar.Enabled = False
        BtnFinalizarFactura.Enabled = False
        TxtTotalPagar.Enabled = False
    End Sub
    Private Sub BtnCerrar_Click(sender As Object, e As EventArgs) Handles BtnCerrar.Click
        Me.Close()
    End Sub
 
    Private Sub BtnDevolucion_Click(sender As Object, e As EventArgs) Handles BtnDevolucion.Click
        FrmDevolucionesClientes.Show()
    End Sub
 
    Private Sub TxtCodCli_DoubleClick(sender As Object, e As EventArgs) Handles TxtCodCli.DoubleClick
        Dim FBC As New FrmBuscarCliente
        AddOwnedForm(FBC)
        FBC.ShowDialog()
    End Sub
 
    Private Sub TxtCodRep_DoubleClick(sender As Object, e As EventArgs) Handles TxtCodRep.DoubleClick
        Dim FBR As New FrmBuscarRepuestos
        AddOwnedForm(FBR)
        FBR.ShowDialog()
    End Sub
 
    Private Sub BtnNuevaFactura_Click(sender As Object, e As EventArgs) Handles BtnNuevaFactura.Click
        TxtCodEmp.Enabled = True
        BdpFecha.Enabled = True
        BdpFecha.Value = DateTime.Now
        TxtCodCli.Enabled = True
        TxtNombreCli.Enabled = True
        TxtIdentidad.Enabled = True
        TxtRTN.Enabled = True
        BtnQuitarCliente.Enabled = True
        TxtCodRep.Enabled = True
        TxtDescripcion.Enabled = True
        TxtPrecio.Enabled = True
        TxtCantidad.Enabled = True
        TxtSubTotal.Enabled = True
        TxtISV.Enabled = True
        TxtTotal.Enabled = True
        BtnQuitarRepuesto.Enabled = True
        BtnAgregarRepuesto.Enabled = True
        DgvDetalleFactura.Enabled = True
        BtnGuardar.Enabled = True
        BtnFinalizarFactura.Enabled = True
        TxtTotalPagar.Enabled = True
 
    End Sub
 
    Private Sub DgvDetalleFactura_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DgvDetalleFactura.CellClick
        TxtNumFact.Text = DgvDetalleFactura.SelectedCells.Item(0).Value
        TxtCodRep.Text = DgvDetalleFactura.SelectedCells.Item(1).Value
        TxtDescripcion.Text = DgvDetalleFactura.SelectedCells.Item(2).Value
        TxtPrecio.Text = DgvDetalleFactura.SelectedCells.Item(3).Value
        TxtCantidad.Text = DgvDetalleFactura.SelectedCells.Item(4).Value
        TxtSubTotal.Text = DgvDetalleFactura.SelectedCells.Item(5).Value
        TxtIsv.Text = DgvDetalleFactura.SelectedCells.Item(6).Value
        TxtTotal.Text = DgvDetalleFactura.SelectedCells.Item(7).Value
    End Sub
 
    Private Sub BtnQuitarCliente_Click(sender As Object, e As EventArgs) Handles BtnQuitarCliente.Click
        TxtCodCli.Clear()
        TxtNombreCli.Clear()
        TxtIdentidad.Clear()
        TxtRTN.Clear()
    End Sub
 
    Private Sub BtnQuitarRepuesto_Click(sender As Object, e As EventArgs) Handles BtnQuitarRepuesto.Click
        TxtCodRep.Clear()
        TxtDescripcion.Clear()
        TxtPrecio.Clear()
        TxtCantidad.Clear()
        TxtSubTotal.Clear()
        TxtISV.Clear()
        TxtTotal.Clear()
    End Sub
 
    Private Sub BtnAgregarRepuesto_Click(sender As Object, e As EventArgs) Handles BtnAgregarRepuesto.Click
        If Me.ValidateChildren = True And TxtCodRep.Text <> "" And TxtDescripcion.Text <> "" And TxtPrecio.Text <> "" And
                         TxtCantidad.Text <> "" And TxtSubTotal.Text <> "" And TxtIsv.Text <> "" And TxtTotal.Text <> "" Then
 
            Try
                DgvDetalleFactura.Rows.Add(TxtNumFact.Text, TxtCodRep.Text, TxtDescripcion.Text, TxtPrecio.Text, TxtCantidad.Text, TxtSubTotal.Text, TxtIsv.Text, TxtTotal.Text)
                MessageBox.Show("Agregado Exitosamente", "Agregando Producto")
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        Else
            MessageBox.Show("Debe llenar todos los campos", "Agregando Producto", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
 
        Totales()
 
        Dim fila As New DataGridViewRow
        Dim total As Double
        For Each fila In DgvDetalleFactura.Rows
            total = total + fila.Cells(7).Value
        Next
        TxtTotalPagar.Text = Val(total)
        TxtTotalPagar.Text = "L." & FormatNumber(total, 2)
 
 
        TxtCodRep.Clear()
        TxtDescripcion.Clear()
        TxtPrecio.Clear()
        TxtCantidad.Clear()
        TxtSubTotal.Clear()
        TxtISV.Clear()
        TxtTotal.Clear()
    End Sub
 
    Private Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click
        'If Me.ValidateChildren = True And BdpFecha.Text <> "" And TxtCodCli.Text <> "" And TxtNombreCli.Text <> "" And TxtIdentidad.Text <> "" And TxtRTN.Text <> "" Then
        Try
            CF.Fun_InsertarFactura(TxtNumFact.Text, BdpFecha.Text, TxtCodCli.Text)
            CF.Fun_InsertarDetalleFactura(TxtNumFact.Text, TxtCodRep.Text, TxtDescripcion.Text, TxtPrecio.Text, TxtCantidad.Text, TxtSubTotal.Text, TxtIsv.Text, TxtTotal.Text)
                MessageBox.Show("Guardado Exitosamente", "Guardando Producto")
 
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        ' Else
        'MessageBox.Show("Debe llenar todos los campos", "Guardando Producto", MessageBoxButtons.OK, MessageBoxIcon.Information)
        'End If
        DgvDetalleFactura.Rows.Clear()
        TxtCodCli.Clear()
        TxtNombreCli.Clear()
        TxtIdentidad.Clear()
        TxtRTN.Clear()
    End Sub
 
 
End Class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por Phil Rob (843 intervenciones) el 07/06/2020 23:15:36
Hola,

No veo en tu codigo "String.Format("{0:##0.00}", ... ... )". Pero, veo "FormatNumber(total, 2)" que funciona.

Por lo tanto, tu problema no es el Formato, pero otra cosa.

Para ejemplo, el codigo siguiente :

1
2
TxtTotalPagar.Text = Val(total)    ' Para que hacer Val cuando total es Double ?
TxtTotalPagar.Text = "L." & FormatNumber(total, 2)   ' Y para que reemplazar TxtTotalPagar.Text tras que vienes de lo escribir ?

La funcion FormatNumber es bien, puedes lo utilizar cada vez que quieres controlar la cantidad de decimales. Pere atencion, la variable que das a esta funcion debes ser Single o Double.

Para ejemplo :
1
2
3
4
5
6
7
8
9
10
Private Sub DgvDetalleFactura_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DgvDetalleFactura.CellClick
    TxtNumFact.Text = DgvDetalleFactura.SelectedCells.Item(0).Value
    TxtCodRep.Text = DgvDetalleFactura.SelectedCells.Item(1).Value
    TxtDescripcion.Text = DgvDetalleFactura.SelectedCells.Item(2).Value
    TxtPrecio.Text = FormatNumber(CType(DgvDetalleFactura.SelectedCells.Item(3).Value, Double))
    TxtCantidad.Text = DgvDetalleFactura.SelectedCells.Item(4).Value
    TxtSubTotal.Text = FormatNumber(CType(DgvDetalleFactura.SelectedCells.Item(5).Value, Double))
    TxtIsv.Text = FormatNumber(CType(DgvDetalleFactura.SelectedCells.Item(6).Value, Double))
    TxtTotal.Text = FormatNumber(CType(DgvDetalleFactura.SelectedCells.Item(7).Value, Double))
End Sub

Atencion, veo que escribes tu codigo en VB 6.0 pero no escribes VB.Net. Para VB 6.0, existe el foro https://www.lawebdelprogramador.com/foros/Visual-Basic/index1.html.

Si otro problema, aclaras tu pregunta y quizá envias tu proyecto completo para podemos lo ejecutar.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de luisao
Val: 60
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por luisao (27 intervenciones) el 09/06/2020 02:51:39
Buenas tardes Estimado,

agradezco mucho tu respuesta.

Adjunto envio el proyecto que estoy realizando para la clase de Ingenieria de Software II, ojala puedas ver el proyecto completo y el codigo lo estoy realizando basdo en POO.

cualquier error (seguro habran varios) por favor hazmelo saber, de pronto alguna mejora tambien.

muchisimas gracias.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por Phil Rob (843 intervenciones) el 09/06/2020 12:15:22
Hola Louisao,

Si quieres escribir tus códigos en VB.Net, este es bien de desactivar la librería Microsoft.VisualBasic en las referencias del proyecto.
Mira la video : https://www.dropbox.com/s/0p57nii4qqv7n7t/Louisao.mp4?dl=0
Con Microsoft.VisualBasic, este compila sin error. Sin Microsoft.VisualBasic, mucho errores (± 95).
Estos errores están MsgBox, Randomize, Rnd, Val y FormatNumber que no existen en VB.Net.

He reemplazado todos MsgBox por MessageBox.Show en todo la solucion.

Randomize y Rnd pueden ser reemplazados por Microsoft.VisualBasic.Randomize y Microsoft.VisualBasic.Rnd para un uso excepcional. Pero, podemos calcular numérico aleatorio de otra manera. He escrito la manera en los Form FrmFacturas y FrmRepuestos.

En FrmFacturas, he reemplazado FormatNumber(total, 2) (que es VisualBasic) por String.Format("{0:##0.00}", total) y he suprimido Val porque no es necesario a este lugar. Cuando será necesario, tienes que utilizar CType(NombreDeLaVariable, NombreDelTipo).
Ejemplos :
UnaVariableDouble = CType(UnaString, Double)
UnTextBox.Text = String.Format("{0:##0.00}", CType(totalDeTipoString, Double))

Tras estos correcciones, este compila sin problema et puedo ejecutar. Pero no sé utilizado tu programa, no sé escribir los valores que muestras en el foro. Pues, no sé depurar más.

Adjunto tu proyecto corregido como descrito.

Si envías como ejecutar, quizá puedo corregir más.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de melqui
Val: 384
Bronce
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por melqui (110 intervenciones) el 10/06/2020 03:44:30
luisao,

bueno por lo que veo es que una solucion básica.

mas solo para tu conocimiento.

por lo que estaba viendo algunas informaciones de la microsoft.

no es recomendable el tipo de campo 'MONEY.' esto porque la estructura de ese tipo de campo entra conflicto al momento de declarar suas validaciones.

para que te salga como necesites altere el tipo de campo para DECIMAL(10,2) es la escala del tamanho de las casa decimales.
tal como está mis 2 imagenes

Screenshot_1



Screenshot_2


ahora dentro de tu proyecto,

para que salga formatado

use asi en el textbox , dentro del evento level

1
textbox.text = FormatCurrency(textbox.text )

e el evento enter
1
textbox.text=textbox.text.replace("s/.","")


textbox 'coloque tu textbox como la tienes.


espero que sea de ayuda.
abrazos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de luisao
Val: 60
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por luisao (27 intervenciones) el 11/06/2020 23:59:50
gracias de nuevo por tu respuesta,

Adjunto link de Google Drive donde si gusta puede descargar el video que hice referente a lo que quiero programar , en si, se trata de un negocio ficticio de una microempresa de venta de repuestos genericos para motocicleta.

https://drive.google.com/file/d/1zJrvmFOL00C8viFWuB-ZCiXxr9mrMjS1/view?usp=sharing

muchas gracias por tu ayuda.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 2.985
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por Phil Rob (843 intervenciones) el 12/06/2020 07:47:12
Hola Luisao,

He visto tu proyecto, este es un programa importante !

También, he visto que el problema de la cantidad de decimales es solucionado

Que tenga un buen día
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de luisao
Val: 60
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por luisao (27 intervenciones) el 12/06/2020 08:22:45
muchas gracias por sus comentarios.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 22 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda !! decimales en textbox

Publicado por apacheco (7 intervenciones) el 12/06/2020 15:11:04
Yo tuve ese problema y lo resolví con

campo_base_datos = campo_double.ToString("F2") sin edicion del separador decimal (999999.99) o ToString("N2") con el separador decimal (999,999.99)

No he vuelto a tener problemas.

Te aconsejaría que lo utilizases siempre que hagas operaciones con algún campo Double
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar