none
Guardar DataTable en Mysql RRS feed

  • Pregunta

  • Buenas Tengo este codigo desarrollado bajo vb.net:

    If dgv Is Nothing Then Return Nothing

            table = New DataTable

            For Each col As DataGridViewColumn In dgv.Columns
                Dim column As New DataColumn(col.Name, Type.GetType("System.String"))
                table.Columns.Add(column)
            Next

            For Each viewRows As DataGridViewRow In dgv.Rows
                Dim row As DataRow = table.NewRow()

                For Each col As DataGridViewColumn In dgv.Columns
                    Dim value As Object = viewRows.Cells(col.Name).Value
                    row.Item(col.Name) = If(value Is Nothing, DBNull.Value, value)

                Next col
                table.Rows.Add(row)
            Next viewRows
            Return table

    el cual me permite agregar los registros y los items que se almacenan en un DatagridView desde otros controles como Textbox, Combobox entre otros, el cual uso de la siguiente manera:

    dim table as Datatable = nombredelafuncion(DataGridView1)

    mi pregunta es despues de haber almacenado los datos en el datatable que debo hacer para guardar la informacion almacenada alli en una table con el gestor Mysql.

    Y como en la parte donde intento aplicar este codigo es en un formulario de compras y pues guardo la orden de compra en una table y los productos pedidos en otra igual seria tambien meter el codigo de esa compra en la tabla donde se almacenan los pedidos.

    de ante gracias por la atencion prestada

    • Cambiado Enrique M. Montejo lunes, 9 de marzo de 2015 15:31 Pregunta relacionada con el acceso a datos con MySQL.
    miércoles, 4 de marzo de 2015 20:15

Todas las respuestas

  • Saludos:

    En mi forma de ver, solo necesitas crear el INSERT en la misma function, asi:

    Dim MyInsert As String 
    MyInsert = "INSERT INTO MyTable VALUES ('"
    
    For Each viewRows As DataGridViewRow In dgv.Rows
       Dim row As DataRow = table.NewRow()
    	For Each col As DataGridViewColumn In dgv.Columns
               Dim value As Object = viewRows.Cells(col.Name).Value
               row.Item(col.Name) = If(value Is Nothing, DBNull.Value, value)
    		' Aqui actualizas la cadena
    	   MyInsert &= row.Item(col.Name).ToString & "', '"
    	Next col
            table.Rows.Add(row)
    		' Aqui cierras el Insert
    	MyInsert &= "'); "
    Next viewRows

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    jueves, 5 de marzo de 2015 16:16
  • gracias jose luis por responder pero mira como realizo las inserciones me podrias ee desmenusar tu codigo por favor para entenderlo y pues adaptarlo. gracias

    Strsql = "insert into taimpuestos (idtaimpuestos,tanombre,tadescripcion,taestado) VALUES ('" + Tcodigo.Text + "','" + Tnombre.Text + "','" + Tdescripcion.Text + "','" + estado + "')"

    cnn.Open()
                    If Procesar(Strsql) = True Then
                        MsgBox("El impuesto sea registrado exitosamente mente en el sistema", MsgBoxStyle.Information, "Operación Exitosa")
                   

    Codigo EliminaTab

    Public Function Procesar(Sql As String) As Boolean
            Dim functionReturnValue As Boolean = False
            Dim myCommand As New MySqlCommand()
            functionReturnValue = True
            Try
                myCommand.Connection = cnn
                myCommand.CommandText = Sql
                myCommand.ExecuteNonQuery()
            Catch myerror As MySqlException
                functionReturnValue = False
            End Try
            Return functionReturnValue
        End Function

    jueves, 5 de marzo de 2015 16:25
  • Saludos:

    En mi forma de ver, solo necesitas crear el INSERT en la misma function, asi:

    Dim MyInsert As String 
    MyInsert = "INSERT INTO MyTable VALUES ('"
    
    For Each viewRows As DataGridViewRow In dgv.Rows
       Dim row As DataRow = table.NewRow()
    	For Each col As DataGridViewColumn In dgv.Columns
               Dim value As Object = viewRows.Cells(col.Name).Value
               row.Item(col.Name) = If(value Is Nothing, DBNull.Value, value)
    		' Aqui actualizas la cadena
    	   MyInsert &= row.Item(col.Name).ToString & "', '"
    	Next col
            table.Rows.Add(row)
    		' Aqui cierras el Insert
    	MyInsert &= "'); "
    Next viewRows

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    O Jose luis como hago para guardar todo consecutivamente automatizar sin tener que meter el nombre de la columna en el codigo. si me hago entender?
    jueves, 5 de marzo de 2015 17:31
  • Saludos:

    1) La function procesar esta mal, colocas en TRUE el return ANTES de hacer algo. Deberia ser asi:

    Public Function Procesar(Sql As String) As Boolean
             Dim functionReturnValue As Boolean = False
             Dim myCommand As New MySqlCommand()
             Try
                 myCommand.Connection = cnn
                 myCommand.CommandText = Sql
                 myCommand.ExecuteNonQuery()
                 functionReturnValue = True
             
             Catch myerror As MySqlException
                 functionReturnValue = False
             End Try
             Return functionReturnValue
         End Function

    2) Como lo coloque esta guardando todo lo que tengas en el DGV. Si estas recorriendo bien, deberia gardarlo todo.

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    jueves, 5 de marzo de 2015 21:22
  • Jose disculpa mi ignorancia pero ayudame si no es mucho pedir con el codigo completo creeme solo sera una vez aprendo rapido mi vida.

    es decir desde que debo hacer en el recorrido como en la funcion procesar.

    Gracias de ante mano Jose Luis creeme me ayudaras demasiado

    jueves, 5 de marzo de 2015 22:02
  • Saludos:

    Mejor te ayudo via Messenger, Skype o Teamviewer.

    Me muestras que tienes y lo arreglamos, asi tu aprendes y no tengo que trabajar a ciegas.

    Posteame un email al que pueda comunicarme.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    viernes, 6 de marzo de 2015 3:32
  • Skype: Ponchale
    Email: alfonsobhernandez@yahoo.com.co

    seria preferible hacerlo por skype :) :) gracias por este gesto

    viernes, 6 de marzo de 2015 5:27