Sumar Columna de Datagridview en Visual Basic Net

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

Sumar columna de Datagridview en Visual Basic Net

d
Hola amigos..esta es otra entrega que tal vez les sera tiles en momentos
que estn desarrollando una aplicacin de tal manera que algunas veces
necesitamos sumar columnas numricas del datagridview y sobre todo
presentarlas al final del mismo.
Entonces para ello mostremos una grilla llena de cantidades numricas que
se desea sumar y al final quede as:

Recuerda que debes poner en las propiedades del control datagridview


{AllowUserToAddRows=False}para evitar que el control
agregue automticamente filas
Al final el cdigo sobre el botn:
Private Sub Btnsumar_Click(sender As System.Object, e As
System.EventArgs) Handles Btnsumar.Click

Try
Dim n As Integer = 4 ' numero contador
Dim cantidad(n) As Integer 'matriz para almacenar hasta n valores
Dim valor As Double = 0.18 'valor de un articulo en comn
Dim subtotal(n) As Double ' matriz que almacena los subtotales de cada
compra
Dim suma As Double 'almacena el total de la suma de la columna subtotal
For i As Integer = 0 To n - 1

cantidad(i) = Val(InputBox("Ingresar cantidad N" & i + 1))

Next

For i As Integer = 0 To n - 1
subtotal(i) = cantidad(i) * valor
suma = suma + subtotal(i)
Next
grid1.Rows.Add(n + 1) 'numero de filas del grid
For r As Integer = 0 To n - 1
grid1.Item(0, r).Value = r + 1
grid1.Item(1, r).Value = Format(cantidad(r), "0.00")
grid1.Item(2, r).Value = Format(valor, "0.00")
grid1.Item(3, r).Value = Format(subtotal(r), "0.00")
grid1.Item(2, n).Value = "TOTALES="
grid1.Item(3, n).Value = Format(suma, "0.00")
Next
Catch ex As KeyNotFoundException
MessageBox.Show("Error de concurrencia:" & vbCrLf & ex.Message)
End Try
End Sub

Combo1.Datasource = Nothing se te limpia el combo.


Bueno tambien veo que ahi pones
da.Fill(ds)
intenta poniendo antes de eso
ds = new DataSet()
da.Fill(ds)

Simple ejemplo en visual basic.net , para cargar un campo de una tabla en un


control ComboBox
En el ejemplo, primero se crea una nueva conexin hacia la base de datos de de sql
server., en este caso se llama base_prueba
Paso 2, se crea un SqlCommand pasndole la consulta , por ejemplo : "Select
Campo From Tabla"
Paso 3 se llena un DataSet con los datos
Paso 4 se asigna al DataSource del ComboBox el dataset
Paso 5 Se indica a la propiedad DisplayMember del combobox , el nombre del
campo a visualizar
Cdigo fuente
Texto planoImprimir
1.

Option Explicit On

2.

Option Strict On

3.
4.

' Espacio

5.

Imports System.Data.SqlClient

6.
7.

Public Class Form1

8.

' Cadena de conexin

9.

Private Const cs As String = "Data Source=(local)\SQLEXPRESS;" & _

10.

"Integrated Security=True;" & _

11.

"Initial Catalog=bd_prueba"

12.
13.
14.

Private Sub Form1_Load( _


ByVal sender As System.Object, _

15.

ByVal e As System.EventArgs) Handles MyBase.Load

16.
17.

'enviar el control ComboBox y la consulta

18.

cargar_Combo(ComboBox1, "Select Apellido From t_clientes")

19.
20.

End Sub

21.
22.

Private Sub cargar_Combo( _

23.

ByVal ComboBox As ComboBox, _

24.

ByVal sql As String)

25.
26.

' nueva conexin indicando al SqlConnection la cadena de conexi


n

27.

Dim cn As New SqlConnection(cs)

28.
29.

Try

30.
31.

' Abrir la conexin a Sql

32.

cn.Open()

33.
34.

' Pasar la consulta sql y la conexin al Sql Command

35.

Dim cmd As New SqlCommand(sql, cn)

36.
37.

' Inicializar un nuevo SqlDataAdapter

38.

Dim da As New SqlDataAdapter(cmd)

39.
40.

'Crear y Llenar un Dataset

41.

Dim ds As New DataSet

42.

da.Fill(ds)

43.
44.

' asignar el DataSource al combobox

45.

ComboBox.DataSource = ds.Tables(0)

46.
47.

' Asignar el campo a la propiedad DisplayMember del combo

48.

ComboBox.DisplayMember = ds.Tables(0).Columns(0).Caption.ToS
tring

49.
50.

Catch ex As Exception

51.

MessageBox.Show(ex.Message.ToString, _

52.

"error", MessageBoxButtons.OK, _

53.

MessageBoxIcon.Error)

54.

Finally

55.

If cn.State = ConnectionState.Open Then

56.

cn.Close()

57.
58.
59.

End If
End Try
End Sub

60. End Class

Cdigo de ejemplo en Visual Basic.NET para crear un formulario Maestro Detalle


utilizando dos controles DataGridView
El formulario contiene dos DataGridview. El DataGridView1 es para la tabla maestro
donde se cargan los regisros de una tabla (tabla clientes) , y en el otro control
DatagridView, los datos de la tabla pedidos para el detalle
Ambas tablas tienen un campo en comn, (IdCliente). Al seleccionar un registro del
DV Maestro, se visualiza en el detalle , el o los pedidos de ese cliente en el otro DV

Para el ejemplo se necesita:

colocar dos controles DataGridview en el formulario ( llamados DvMaestro y


DvDetalle )

Indicar

el

campo

en

comn

para

ambas

tablas

en

la

'campo_Relacionado'.

Indicar las consultas sql para cargar los registros en ambas grillas

Formulario

Cdigo fuente

Texto planoImprimir
1.

Option Explicit On

2.

Option Strict On

3.
4.
5.

Imports System.Data.SqlClient

variable

6.

Public Class Form1

7.
8.

' cadena de conexin

9.

Private Const cs As String = "Data Source=(local)\SQLEXPRESS;" & _

10.

"Initial Catalog=la_base_de_datos_sql;" & _

11.

"Integrated Security=true"

12.
13.

' campo relacionado para las dos tablas

14.

' '''''''''''''''''''''''''''''''''''''''''''''''''''''

15.

Private Const campo_Relacionado As String = "IdCliente"

16.
17.

Private Sub Form1_Load( _

18.

ByVal sender As System.Object, _

19.

ByVal e As System.EventArgs) Handles MyBase.Load

20.
21.

' crear nueva conexin

22.

Dim conexion As New SqlConnection(cs.ToString)

23.
24.
25.
26.

Try

27.

' abrir la conexin con la base de datos

28.

conexion.Open()

29.
30.

' Nuevo objeto Dataset

31.

Dim DataSet As New DataSet

32.
33.
34.

' ''''''''''''''''''''''''''''''''''''''''''''''''''''

35.

' DataGridView maestro

36.

' ''''''''''''''''''''''''''''''''''''''''''''''''''''

37.
38.

Dim Adaptador As New SqlDataAdapter()

39.

Dim comando As New SqlCommand

40.
41.

With comando

42.

' Asignar el sql para seleccionar los datos de la tabla


Maestro

43.

.CommandText = "SELECT idcliente,Nombre,Apellido FROM tC


lientes"

44.
45.

.Connection = conexion
End With

46.
47.

With Adaptador

48.

.SelectCommand = comando

49.

' llenar el dataset

50.

Adaptador.Fill(DataSet, "Maestro")

51.

End With

52.
53.

' Enlazar el DataGridView al dataset

54.

With DvMaestro

55.

.DataMember = "Maestro"

56.

.DataSource = DataSet

57.
58.

.SelectionMode = DataGridViewSelectionMode.FullRowSelect

59.

.DefaultCellStyle.BackColor = Color.AliceBlue

60.
61.

End With

62.

' ''''''''''''''''''''''''''''''''''''''''''''''''''''

63.

' DataGridView detalle

64.

' ''''''''''''''''''''''''''''''''''''''''''''''''''''

65.
66.

With comando

67.
68.

' cadena sql para cargar la tabla pedidos


.CommandText = "SELECT idcliente,FechaPedido, FechaEntre
ga,Monto,Destino FROM tPedidos"

69.

End With

70.
71.

With Adaptador

72.

.SelectCommand = comando

73.

' llenar el dataset

74.

Adaptador.Fill(DataSet, "Detalle")

75.

End With

76.
77.

' Agregar la relacin ( campo en comn : campo_Relacionado =


idCliente )

78.

' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''

79.

With DataSet

80.

.Relations.Add("mi_Relacion", _

81.

.Tables("Maestro").Columns(campo_Relaciona
do), _

82.

.Tables("Detalle").Columns(campo_Relaciona
do))

83.

End With

84.
85.
86.

' Establecer el DataSource y el DataMember para el DataGridv


iew Detalle

87.

With DvDetalle

88.

.DataSource = DataSet

89.

.DataMember = "Maestro.mi_Relacion"

90.

.SelectionMode = DataGridViewSelectionMode.FullRowSelect

91.

End With

92.
93.

' cerrar la conexn

94.

With conexion

95.

If .State = ConnectionState.Open Then

96.

.Close()

97.

End If

98.

.Dispose()

99.

End With

100.
101.

Catch ex As Exception

102.
103.

MsgBox(ex.Message.ToString)
End Try

104.
105.

Me.Text = "Formulario Maestro Detalle con dataGridviews"

106.
107.
108.

End Sub

109.
110.

End Class

También podría gustarte