Principales respuestas
Multiplica mal

Pregunta
-
Hola, me pueden ayudar a multiplicar estos valores de cada producto.
Lo que quiero que haga es lo siguiente:
Producto 1 Cant: 2 Precio: 10
Producto 2 Cant: 3 Precio: 5
Así quiero que me muestre:
Producto Cantidad Precio Subtotal
Producto 1 2 10 20
Producto 1 3 5 15
El codigo que tengo es:
Dim Subtotal As Double = 0 For Each row As DataGridViewRow In DataGridView2.Rows Subtotal += CDbl(row.Cells("Column2").Value) * CDbl(row.Cells("Column4").Value) & vbCrLf Next Dim MySubtotal = Format(Subtotal.ToString) & vbCrLf
Me muestra el total de la venta no el valor de la multiplicación de cada producto.
El código lo uso para la impresión de un ticket.
Saludos.
Respuestas
-
La razon de que te lo calcule mal es el "+" que tienes puesto antes del "=" en el calculo del subtotla. Por eso te acumula el total de la venta.
Si le quitas el "+", el segundo problema sera que tendras que mostrar ese Subtotal en algun sitio en todas las lineas. Podrias hacerlo asi:
Subtotal = CDbl(row.Cells("Column2").Value) * CDbl(row.Cells("Column4").Value)
row.Cells("NombreColumna").Value = Subtotal
Siendo, por supuesto, "NombreColumna" el nombre de la columna que previamente habras agregado al grid para contener dicho resultado.
- Marcado como respuesta Federico32113 miércoles, 23 de noviembre de 2016 19:52
-
Hola
La columna subtotal es la que no se muestra?, por lo que veo en tu código no lo asignas.
Dim Subtotal As Double = 0 For Each row As DataGridViewRow In DataGridView2.Rows Dim subtotalProducto as Double=0 subtotalProducto = CDbl(row.Cells("Column2").Value) * CDbl(row.Cells("Column4").Value) & vbCrLf subtotal+=subtotalProducto
row.Cells("TuColumnaDelSubTotal").Value=subtotalProducto Next Dim MySubtotal = Format(Subtotal.ToString) & vbCrLf
Saludos
- Editado Norberto Agustin miércoles, 23 de noviembre de 2016 16:18
- Marcado como respuesta Federico32113 miércoles, 23 de noviembre de 2016 19:52
-
Hola Pedro9089,
Puedes mostrar imagen de tu DataGridView con los datos ?
Multiplicar valores (pregunta duplicada)
La verdad tu explicación no es muy convincente, si quieres obtener la multiplicación de precio * cantidad de cada producto (cada fila del DataGridView) el código mostrado no es el correcto ya que en tu variable SubTotal lo que haces es almacenar la multiplicación de precio * cantidad de todas las filas del DGV.
Dim Subtotal As String = String.Empty For Each row As DataGridViewRow In DataGridView2.Rows Subtotal += CDbl(row.Cells("Column2").Value) * CDbl(row.Cells("Column4").Value) & vbCrLf Next MessageBox.Show(Subtotal)
Resultado : Esto es lo que deseas ?
[-] .... Así quiero que me muestre ..
Pero quieres que te muestre así en tu DataGridView o quieres crear una estructura de una tabla en una cadena (lo menciono porque mencionas ticket) ?
Dim data As String = String.Empty For Each row As DataGridViewRow In DataGridView2.Rows data += String.Format("{0,5} {1,5} {2,5} {3,5}{4}", row.Cells("Producto").Value, row.Cells("Cantidad").Value, row.Cells("Precio").Value, CDbl(row.Cells("Cantidad").Value) * CDbl(row.Cells("Precio").Value), vbCrLf) Next MessageBox.Show(data)
Resultado :
Si añades imágenes para un entendimiento mejor ?
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta Federico32113 miércoles, 23 de noviembre de 2016 19:52
Todas las respuestas
-
La razon de que te lo calcule mal es el "+" que tienes puesto antes del "=" en el calculo del subtotla. Por eso te acumula el total de la venta.
Si le quitas el "+", el segundo problema sera que tendras que mostrar ese Subtotal en algun sitio en todas las lineas. Podrias hacerlo asi:
Subtotal = CDbl(row.Cells("Column2").Value) * CDbl(row.Cells("Column4").Value)
row.Cells("NombreColumna").Value = Subtotal
Siendo, por supuesto, "NombreColumna" el nombre de la columna que previamente habras agregado al grid para contener dicho resultado.
- Marcado como respuesta Federico32113 miércoles, 23 de noviembre de 2016 19:52
-
Hola
La columna subtotal es la que no se muestra?, por lo que veo en tu código no lo asignas.
Dim Subtotal As Double = 0 For Each row As DataGridViewRow In DataGridView2.Rows Dim subtotalProducto as Double=0 subtotalProducto = CDbl(row.Cells("Column2").Value) * CDbl(row.Cells("Column4").Value) & vbCrLf subtotal+=subtotalProducto
row.Cells("TuColumnaDelSubTotal").Value=subtotalProducto Next Dim MySubtotal = Format(Subtotal.ToString) & vbCrLf
Saludos
- Editado Norberto Agustin miércoles, 23 de noviembre de 2016 16:18
- Marcado como respuesta Federico32113 miércoles, 23 de noviembre de 2016 19:52
-
Hola Pedro9089,
Puedes mostrar imagen de tu DataGridView con los datos ?
Multiplicar valores (pregunta duplicada)
La verdad tu explicación no es muy convincente, si quieres obtener la multiplicación de precio * cantidad de cada producto (cada fila del DataGridView) el código mostrado no es el correcto ya que en tu variable SubTotal lo que haces es almacenar la multiplicación de precio * cantidad de todas las filas del DGV.
Dim Subtotal As String = String.Empty For Each row As DataGridViewRow In DataGridView2.Rows Subtotal += CDbl(row.Cells("Column2").Value) * CDbl(row.Cells("Column4").Value) & vbCrLf Next MessageBox.Show(Subtotal)
Resultado : Esto es lo que deseas ?
[-] .... Así quiero que me muestre ..
Pero quieres que te muestre así en tu DataGridView o quieres crear una estructura de una tabla en una cadena (lo menciono porque mencionas ticket) ?
Dim data As String = String.Empty For Each row As DataGridViewRow In DataGridView2.Rows data += String.Format("{0,5} {1,5} {2,5} {3,5}{4}", row.Cells("Producto").Value, row.Cells("Cantidad").Value, row.Cells("Precio").Value, CDbl(row.Cells("Cantidad").Value) * CDbl(row.Cells("Precio").Value), vbCrLf) Next MessageBox.Show(data)
Resultado :
Si añades imágenes para un entendimiento mejor ?
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta Federico32113 miércoles, 23 de noviembre de 2016 19:52
-
Este seria el data grid de donde se imprimiría el ticket.
Así es como me lo muestra mal.
Quiero que me lo muestre como lo mencionas aca
Saludos.- Editado Federico32113 miércoles, 23 de noviembre de 2016 16:49
-