none
Como puedo guardar y eliminar registros a traves de un datagridview????... RRS feed

  • Pregunta

  • Hola, saludos...

    Disculpen, les comento mi problema, estoy realizando un proyecto para el seguimiento del consumo del agua, hielo, gasolina y diesel de una empresa X...trabajo con MySQL como motor de base de datos....los registros de los datos los quiero cargar a traves de un datagridview y que despues de llenar ese datagridview de click en el boton guardar (u en cualqier otro button de acuerdo a lo que este realizando) para que ese informacion se almacene en la base...me encontre este codigo en internet, lo adapte de acuerdo a mis necesidades pero no me permite guardar ni eliminar los registros, tal ves el error no es muy complicado pero soy nueva en esto de la prog. y pues mas en la utilizacion de visual studio 2010...les agradeceria pudieran ayudarme...este proyecto es muy importante para mi ...muchas gracias...

     

    Option Explicit On
    Option Strict On

    Imports System.Data
    Imports System.Data.SqlClient

    Public Class Form1
        'Bindingsource
        Private WithEvents bs As New BindingSource

        'Adaptador de datos sql
        Private SqlDataAdapter As SqlDataAdapter

        'Cadana de conexión
        Private Const cs As String = "Data Source=(local)\SQLEXPRESS;" & "Initial Catalog=patrimoniales;" & "Integrated Security=true"

        'flag
        Private bEdit As Boolean

        'Actualizar los cambios al salir
        ''''''''''''''''''''''''''''''''
        Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
            If bEdit Then
                'Preguntar si se desea guardar
                If (MsgBox("Guardar cambios ?", MsgBoxStyle.YesNo, "guardar")) = MsgBoxResult.Yes Then

                    Actualizar(False)
                End If
            End If
        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO: esta línea de código carga datos en la tabla 'PatrimonialesDataSet.agua' Puede moverla o quitarla según sea necesario.
            Me.AguaTableAdapter.Fill(Me.PatrimonialesDataSet.agua)
            'TODO: esta línea de código carga datos en la tabla 'PatrimonialesDataSet.inventario' Puede moverla o quitarla según sea necesario.
            Me.InventarioTableAdapter.Fill(Me.PatrimonialesDataSet.inventario)

            'Botones
            '''''''''''''''''''''''''''''''''''''''''''''
            Button1.Text = "Buscar"
            Button2.Text = "Guardar"
            Button3.Text = "Insertar"
            Button4.Text = "Actualizar"
            Button5.Text = "Eliminar"
            Button6.Text = "Cancelar"

            'Propiedad del datagrid
            With DataGridView1
                'Alternar color de filas
                .AlternatingRowsDefaultCellStyle.BackColor = Color.FloralWhite
                .DefaultCellStyle.BackColor = Color.Beige
                'Establecer el origen de los datos para el DataGridview
                .DataSource = bs
            End With

            'Cargar los datos
            cargar_registros("Select * From patrimoniales Order by agua", DataGridView1)

        End Sub

        Private Sub cargar_registros(ByVal sql As String, ByVal dv As DataGridView)

            Try
                'Inicializar el SqlDataAdapter indicandole el comando y el connection string
                SqlDataAdapter = New SqlDataAdapter(sql, cs)

                Dim SqlCommandBuilder As New SqlCommandBuilder(SqlDataAdapter)

                'llenar el DataTable
                Dim dt As New DataTable()
                SqlDataAdapter.Fill(dt)

                'Enlazar el BindingSource con el datatable anterior
                ''''''''''''''''''''''''''''''''''''''''''''''''''
                bs.DataSource = dt

                With dv
                    .Refresh()
                    'Coloca el registro arriba de todo
                    .FirstDisplayedScrollingRowIndex = bs.Position
                End With

                bEdit = False

            Catch exSql As SqlException
                MsgBox(exSql.Message.ToString)
            Catch ex As Exception
                MsgBox(ex.Message.ToString)
            End Try
        End Sub
        Private Sub Inventario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Inventario.Click

        End Sub

        Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        End Sub
        'Botón para guardar los cambios y llenar la grilla
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

            Actualizar()

        End Sub
        'Eliminar el elemento actual del BindingSource y actualizar
        Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

            If Not bs.Current Is Nothing Then
                'eliminar
                bs.RemoveCurrent()

                'Guardar los cambios y recargar
                Actualizar()
            Else
                MsgBox("No hay un registro actual para eliminar", MsgBoxStyle.Exclamation, "Eliminar")
            End If


        End Sub

        Private Sub Actualizar(Optional ByVal bCargar As Boolean = True)
            'Actualizar y guardar los cambios

            If Not bs.DataSource Is Nothing Then
                SqlDataAdapter.Update(CType(bs.DataSource, DataTable))
                If bCargar Then
                    cargar_registros("Select * From patrimonielaes Order by agua", DataGridView1)
                End If
            End If
        End Sub

        Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.CellBeginEdit

            bEdit = True
        End Sub
        'Nuevo registro
        Private Sub btn_new_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

            bs.AddNew()
        End Sub
    End Class

    martes, 29 de noviembre de 2011 9:42