Visual Basic.NET - Calcular datagridview automáticamente

   
Vista:

Calcular datagridview automáticamente

Publicado por Elianny (7 intervenciones) el 25/08/2014 03:42:50
Hola a todos
Programo en vb.net

Tengo un datagridview con los siguientes campos:

Código producto descripción cantidad precio importe
1 UPS 2 1000 2000
2 Mouse 1 100 100

Con este código calculo el importe, es decir la cantidad * precio.
este está en el evento CellEndEdit del grid

1
2
3
4
5
6
7
8
Dim row As DataGridViewRow = CType(DGVDetalle_Factura.Rows(e.RowIndex), DataGridViewRow)
        Dim precio As Double
        Dim cantidad As Double
 
        precio = row.Cells("DataGridViewTextBoxColumn6").Value
        cantidad = row.Cells("DataGridViewTextBoxColumn5").Value
 
        row.Cells("DataGridViewTextBoxColumn7").Value = precio * cantidad

El código funciona bien, el problema es que cuando agrego el producto al grid, tengo que hacer un clic a la celda de cantidad y precio para que lo calcule, y lo que deseo es que lo calcule de forma automática.

Un millón de gracias por anticipadas.
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

Calcular datagridview automáticamente

Publicado por Pico (168 intervenciones) el 25/08/2014 19:04:21
Has dicho que ese código lo has metido en el evento CellEndEdit del grid. Lo que haces con el click ese que dices es iniciar la edición y luego salir de ella, con lo que se llama ese evento. Ponlo en otro....
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

Calcular datagridview automáticamente

Publicado por Elianny (7 intervenciones) el 26/08/2014 00:27:41
Me podrías decir cual el es el nombre del evento mas apropiado, para que funcione el calculo de forma automática.

por favor...................................................................................
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

Calcular datagridview automáticamente

Publicado por Pico (168 intervenciones) el 26/08/2014 09:56:14
No es que haya un evento apropiado. Un programa no hace nada automáticamente, lo hace cuando se produce un evento. Si el de CellEndEdit no te vale porque en ningún momento editas una celda tendrás que usar otro, y yo no sé qué haces para introducir datos en el grid como para saber qué eventos se producen.
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 Wilfredo Patricio Castillo

Calcular datagridview automáticamente

Tendrías que indicar como es que metes los datos al datagridview, escribiendo encima de cada celda, o lo haces desde un botón, esa parte primero hay que indicar.
Luego de eso ya se puede ver, si tu código funciona bien, prueba a ponerlo en el evento cell_change o algún otro.

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

Calcular datagridview automáticamente

Publicado por Elianny (7 intervenciones) el 27/08/2014 02:09:46
Gracias a todos por interesarse e mi caso.

los datos se introducen al grid a través de un botón, y el código es:

1
2
3
4
5
6
If txtCodigoProducto.Text <> "" Then
            DGVDetalle_Factura.DataSource = Nothing
 
            DGVDetalle_Factura.Rows.Add(txtCodigoFactura.Text + 1, txtCodigoProducto.Text, txtdescripcion.Text, txtcantidad.Text, txtprecio.Text)
 
        End If

espero en Dios que puedan ayudarme.
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

Calcular datagridview automáticamente

Publicado por Elianny (7 intervenciones) el 27/08/2014 02:34:10
Hola a todos, creo que estoy cerca.

en el Evento CellEnter, cuando agrego el primer producto, lo hace bien el calculo,

pero cuando agrego otro producto, el importe no lo calucula, pero si hago clic en el importe, ahí si lo calcula.

es es el código del calculo:

1
2
3
4
5
6
7
8
Dim row As DataGridViewRow = CType(DGVDetalle_Factura.Rows(e.RowIndex), DataGridViewRow)
        Dim precio As Double
        Dim cantidad As Double
 
        precio = row.Cells("DataGridViewTextBoxColumn6").Value
        cantidad = row.Cells("DataGridViewTextBoxColumn5").Value
 
        row.Cells("DataGridViewTextBoxColumn7").Value = precio * cantidad

y lo agrego a través de un botón.

If txtCodigoProducto.Text <> "" Then
DGVDetalle_Factura.DataSource = Nothing


DGVDetalle_Factura.Rows.Add(txtCodigoFactura.Text + 1, txtCodigoProducto.Text, txtdescripcion.Text, txtcantidad.Text, txtprecio.Text)

End If
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 Wilfredo Patricio Castillo

Calcular datagridview automáticamente

Entonces está mas fácil de lo que te estás asustando
Luego de la línea donde agregas los datos, invoca a una función que calcule y listo.

Saludos cordiales
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

Calcular datagridview automáticamente

Publicado por Elianny (7 intervenciones) el 27/08/2014 14:40:06
hola Wilfredo

disculpa ni ignorancia, pero como puedo crear una función,

por favor ayúdame ya que no tengo tanta experiencia en vb.net
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

Calcular datagridview automáticamente

Publicado por Pico (168 intervenciones) el 27/08/2014 14:51:19
Pon el código del cálculo que quieres hacer después de introducir lo que introduces.

Después de

If txtCodigoProducto.Text <> "" Then DGVDetalle_Factura.DataSource = Nothing DGVDetalle_Factura.Rows.Add(txtCodigoFactura.Text + 1, txtCodigoProducto.Text, txtdescripcion.Text, txtcantidad.Text, txtprecio.Text) End If

pones

Dim row As DataGridViewRow = CType(DGVDetalle_Factura.Rows(e.RowIndex), DataGridViewRow) Dim precio As Double Dim cantidad As Double precio = row.Cells("DataGridViewTextBoxColumn6").Value cantidad = row.Cells("DataGridViewTextBoxColumn5").Value row.Cells("DataGridViewTextBoxColumn7").Value = precio * cantidad

¿No?
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

Calcular datagridview automáticamente

Publicado por Elianny (7 intervenciones) el 27/08/2014 15:18:47
Hola

en el botón el código da error, por ejemplo dice que e.RowIndex, no es miembro

me pare que el código no funciona bien fuera del grid
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

Calcular datagridview automáticamente

Publicado por Pico (168 intervenciones) el 27/08/2014 15:23:33
Te estoy diciendo cómo tienes que hacerlo, no lo que tienes que poner exactamente. Si la variable e no existe en donde estás poniéndola claro que da error. Se trata de que entiendas la idea, no que hagas un copia y pega.
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 Wilfredo Patricio Castillo

Calcular datagridview automáticamente

Hija porqué complicas tu vida?.

Mira si haces esto para agregar tus datos desde el botón:

If txtCodigoProducto.Text <> "" Then
DGVDetalle_Factura.DataSource = Nothing

DGVDetalle_Factura.Rows.Add(txtCodigoFactura.Text + 1, txtCodigoProducto.Text, txtdescripcion.Text, txtcantidad.Text, txtprecio.Text)

End If

Solo es cosa que le agregues al final el resultado y te quedaría así:

DGVDetalle_Factura.Rows.Add(txtCodigoFactura.Text + 1, txtCodigoProducto.Text, txtdescripcion.Text, txtcantidad.Text, txtprecio.Text,val(txtprecio.text)*val(txtcantidad.text))

Y ya está listo.
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

Calcular datagridview automáticamente

Publicado por Elianny (7 intervenciones) el 27/08/2014 20:01:44
Gracias a todos los que preocuparon por mi.

pero un Amigo mio me ayudo con el código y quedó casi idéntico al de Wilfredo Patricio Castillo, gracias por tu amabilidad y paciencia. Que Dios te bendiga y sigue así con ese amor para explicar.

El código esta en botón agregar productos.

1
2
3
4
5
6
7
8
If txtCodigoProducto.Text <> "" Then
		DGVDetalle_Factura.DataSource = Nothing
 
		Dim precio As Double = CDbl(txtprecio.Text)
		Dim cantidad As Double = CDbl(txtcantidad.Text)
 
		DGVDetalle_Factura.Rows.Add(CInt(txtCodigoFactura.Text) + 1, txtCodigoProducto.Text, txtdescripcion.Text, txtcantidad.Text, txtprecio.Text, (cantidad * precio).ToString("N2"))
	End If
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 Wilfredo Patricio Castillo

Calcular datagridview automáticamente

Pues que bueno que hayas solucionado el problema, la cosa era muy simple, ahora a como yo te puse el ejemplo también te ahorras el declarar las 2 variables que igual lo puedes hacer en la misma linea como CDBL(txtprecio.text)* CDBL(txtcantidad.text)

Y listo una sola linea de código.

Saludos cordiales
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

Calcular datagridview automáticamente

Publicado por Narciso Ivan Cisneros Acosta navysoluciones@gmail.com (1 intervención) el 31/10/2016 23:51:58
Amigo, cuando estas EDITANDO una celda... observa que se dibuja un "lápiz..." en la parte izquierda... quiere decir que la celda esta en modo de EDICIÓN... si escribí un 2... el grid aun no sabe si solo sera un 2 o un 20 o un 200 o un 245678935545 es por eso que aun no determia que VALOR tendrá... explícaselo a tus usuarios esa parte... es por eso que se tiene que cambiar de celda o hacer clic fuera del grid
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