Guardar Datagridview en base de datos SQL Compact 4.0
Como anteriormente lo había hecho para Access. ahora les pongo un ejemplo de como guardar un datagridview en una base de datos SQL Compact 4.0, es igual para Compact 3.5. Para el post he tomado un ejemplo anterior de punto de venta y le he agregado un grid para ver como se presentan los datos guardados.
El modulo de conexión;
Module Funciones Public path As String = Form1.lbldir.Text '---------------------------------------- Public conn As New SqlCeConnection("Data Source=" & path) Public sql As String Public cmd As New SqlCeCommand(sql, conn) Public Sub conectarse() Try conn.Open() ' MsgBox("Conexion exitosa") Catch ex As Exception MsgBox(ex.ToString()) End Try ' conn.Close() End Sub Public Function contar_registros(ByRef grid As DataGridView) As String Dim i As String = grid.Rows.Count Return "Número de registros= " & i End Function Public Sub Num_filas_Fijas(ByRef grid As DataGridView) For i As Integer = 0 To grid.Rows.Count - 1 grid.Rows(i).HeaderCell.Value = (i + 1).ToString Next i End Sub End ModuleEn el Form principal:
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click rellenargrid() End Sub Sub rellenargrid() ' generamos valores y llenamos la grid Try Dim filas As Integer = 1 grid.Rows.Add(filas) Dim n As Integer = grid.Rows.Count For i As Integer = 0 To n - 1 grid.Item(0, i).Value = i + 1 grid.Item(1, i).Value = "PRODUCTO" & (i + 1) grid.Item(2, i).Value = Format((CDbl(CDbl((6.3 * Rnd()) + 1))), "0.00") grid.Item(3, i).Value = i + 2 grid.Item(4, i).Value = Format((grid.Item(3, i).Value * grid.Item(2, i).Value), "0.00") Next Catch ex As Exception End Try End Sub Sub Guardar() Try If grid.RowCount = 0 Then MsgBox("No existen datos para guardar", vbCritical) Else conectarse() Dim r As Integer = grid.Rows.Count - 1 For i As Integer = 0 To r ' recorremos la grid para guardar fila a fila cmd.CommandType = CommandType.Text cmd.Connection = conn sql = "INSERT INTO VENTAS(N , DESCRIPCION , VALOR_UNITARIO , CANTIDAD , SUBTOTAL)" sql += "VALUES(@N , @DESCRIPCION , @VALOR_UNITARIO , @CANTIDAD , @SUBTOTAL)" cmd.Connection = conn cmd.Parameters.AddWithValue("@N", grid.Item(0, i).Value) cmd.Parameters.AddWithValue("@DESCRIPCION", grid.Item(1, i).Value) cmd.Parameters.AddWithValue("@VALOR_UNITARIO", grid.Item(2, i).Value) cmd.Parameters.AddWithValue("@CANTIDAD", grid.Item(3, i).Value) cmd.Parameters.AddWithValue("@SUBTOTAL", grid.Item(4, i).Value) cmd.CommandText = sql cmd.ExecuteNonQuery() ' ejecutamos el query cmd.Parameters.Clear() Next MsgBox("Registros Guardados Correctamente", vbExclamation) End If grid.Rows.Clear() ' borramos la grid Catch ex As Exception If ex.ToString.Contains("valores duplicados") Then MsgBox("El Registro Ya existe en la Base de Datos") Else MsgBox(ex.ToString) End If End Try conn.Close() 'cerramos conexion cargar_datos() ' presenta datos guardados en la grid de abajo End Sub Sub cargar_datos() Try conectarse() Dim ds As New DataSet Dim dt As New DataTable Dim strSql As String = "SELECT N, DESCRIPCION,VALOR_UNITARIO,CANTIDAD,SUBTOTAL FROM VENTAS " Dim adp As New SqlServerCe.SqlCeDataAdapter(strSql, conn) adp.Fill(dt) gridpresentacion.DataSource = dt Catch ex As Exception ex.ToString() End Try conn.Close() Num_filas_Fijas(gridpresentacion) 'numeramos los cellheaders para saber cuantas filas se han guardado gridpresentacion.RowHeadersWidth = 60 ' ponemos ancho a las cellhearders End Sub Private Sub btnguardar_Click(sender As Object, e As EventArgs) Handles btnguardar.Click Guardar() End Sub End ClassY eso es todo amigos, sus comentarios al blog son bien recibidos!
En la parte de abajo les dejo mi ejemplo:
https://mega.nz/#!JJdWXKCA!z4KdbER07uCWMxk_2KMJRBRqmwz2NroKVOPkJtXn6OI
Comentarios
Publicar un comentario