none
Agregar filas a DatagridView que ya contiene datos y guardarlo en sql RRS feed

  • Pregunta

  • hola  a todos   tengo  el  siguiente  problema   tengo un datagridview  el  cual   mediante un  boton  un dataset volca los datos  a este  datagridview  pero   lo que  necesito  es   una vez   lleno  el   datagridview   seguir  insertando   datos  desde este    y grabarlos  ala base de  datos  mediante un  boton,    los problemas  que  me encuentro   es que  graba   un  renglon  de  mas   en la base   de  datos   con  valores 0  

    espero y me pueda  apoyar.

    gracias

    • Cambiado Enrique M. Montejo miércoles, 26 de noviembre de 2014 7:07 Pregunta relacionada con el acceso a datos.
    domingo, 23 de noviembre de 2014 21:07

Todas las respuestas

  • Hola:

     Podrías mostrarnos le código que estas usando para guardar los datos.

    Para poder insertar un nuevo Row este deberá de ser insertado en el DataTable al que esta "Bindeado" el DataGridView, aquí algunos links con ejemplos bastante claros sobre como lograr esto:

    How to: Add Rows to a DataTable

    how to add new rows into a datatable vb.net

    Después de agregar el nuevo Row al DataTable solo bastara que vuelvas a establecer el Bind al DataSource del control para ver reflejado el nuevo registro insertado.


    Saludos desde Monterrey, Nuevo León, México!!!

    domingo, 23 de noviembre de 2014 22:41
  • si  claro

       Sub llena()

    SqlDataAdapter1.SelectCommand.CommandText = "SELECT ID,NCOMERCIAL,FECHAALTA FROM AltaCliente"

            SqlConnection1.Open()

            SqlDataAdapter1.Fill(DataSet1, "CLIENTE")

            SqlConnection1.Close()
            DataGridView2.DataSource = DataSet1.Tables("CLIENTE")
            
        End Sub

      Sub inserta()

     Dim renglon As Data.DataRow
            Dim UltimoRenglon As Integer
            UltimoRenglon = (DataGridView2.Rows.Count) - 1

      renglon = DataSet1.Tables("Cliente").NewRow()

            MsgBox(DataSet1.Tables("cliente").Rows.Count)
            renglon("id") = CInt(DataGridView2.Rows.Item(UltimoRenglon).Cells(0).Value)

     renglon("ncomercial") = CStr(DataGridView2.Rows.Item(UltimoRenglon).Cells(1).Value)

     renglon("fechaalta") = CDate(DataGridView2.Rows.Item(UltimoRenglon).Cells(2).Value)

      DataSet1.Tables("Cliente").Rows.Add(renglon)

     If DataSet1.HasChanges Then

                           For Each renglon In DataSet1.Tables("cliente").Rows

     If Not renglon.IsNull("id") And renglon("id") > 0 Then
                      
                        SqlCommand1.Parameters.Clear()

                        SqlCommand1.CommandText = "INSERT INTO AltaCliente(id,ncomercial,fechaalta) VALUES (@id,@ncomercial,@fechaalta)"
                        SqlCommand1.Connection = SqlConnection1
                        SqlDataAdapter1.InsertCommand = SqlCommand1

                        SqlCommand1.Parameters.Add("@ID", SqlDbType.Int, 10, "ID")
                        SqlCommand1.Parameters.Add("@NCOMERCIAL", SqlDbType.NVarChar, 300, "NCOMERCIAL")
                        SqlCommand1.Parameters.Add("@FECHAALTA", SqlDbType.Date, 10, "FECHAALTA")
                        SqlConnection1.Open()
                        SqlDataAdapter1.Update(DataSet1, "Cliente")

                        SqlConnection1.Close()
     End If

                Next

    End  sub

    lunes, 24 de noviembre de 2014 0:05
  • compañero yo lo hago asi para grabar y mostrarlo despues al datagriwview espero te sirva
    lunes, 24 de noviembre de 2014 0:16
  • compañero yo lo hago asi talvez lo adaptas a tu codigo 
    lunes, 24 de noviembre de 2014 0:17
  • el mostrar es un sub que carga el datagriwview y cuando le das guardar te lo refresca y te enseña el que acabas de ingresar
    lunes, 24 de noviembre de 2014 0:17
  • gracias wagner   pero   necesito  que sea  atravez   de un  datagridview  y  por  lo que  veo  son  cajas  de  texto

    lunes, 24 de noviembre de 2014 0:28
  • te he aregado el  codigo  haber  si me puedes apoyar

    Graciass

    miércoles, 26 de noviembre de 2014 22:08
  • @conchis

    Cuando agregues un nuevo row a tu DGV debes establecer tu datasource de esta manera

     
     dgvPersonal.DataSource = null;

    Y luego volver a establecerlo 


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    jueves, 27 de noviembre de 2014 1:31
  • Hola:

     Para darte una respuesta mas acertada podrías explicarme un poco mas esto;

     tengo un datagridview  el  cual   mediante un  boton  un dataset volca los datos  a este  datagridview

    1. ¿Del DataGridView pasas los datos a un DataTable de un DataSet?

    2. ¿De un DataTable llenas un control DataGridView?

    pero   lo que  necesito  es   una vez   lleno  el   datagridview   seguir  insertando   datos  desde este    y grabarlos  ala base de  datos  mediante un  boton

     Entiendo lo siguiente:

    1. ¿Tu DataGridView esta esta bindeado a un DataTable a travez del DataSource?

    2. ¿Los datos del DataTable provienen de una base de datos?

    3.¿Al agregar nuevos registros, deseas que solo estos nuevos se guarden en la base de datos o todos los registros presentes en el DataGridView?


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 27 de noviembre de 2014 4:28