Autor Tema: Visual Basic Datagridview modificar registro y guardar en base de datos VB.NET  (Leído 39543 veces)

fezaca

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Hola a todos otra vez, os pido un poco de ayuda, y es la siguiente: tengo en un form una DataGrid 4 TextBox y un botón, ahora marcó un registro en el DataGrid y me pasa los datos de ese registro a los TextBox y lo que pretendo es modificar ese registro (que ya lo puedo hacer) y guardarlo en la base de datos y pasarlo al mismo tiempo al DataGrid para verlo modificado al pulsar un botón.

Gracias
« Última modificación: 03 de Agosto 2015, 19:17 por Alex Rodríguez »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2635
    • Ver Perfil
Hola no has pegado el código con lo que no puedo hacerme una idea, pero lo que parece lógico es que una vez tienes los datos en los textbox y los modificas, pulses el botón "Guardar". Una vez hagas esto, a partir de los datos de los textbox se actualizaría el datagridview. Una vez actualizado el datagridview, harías el guardado en la base de datos y final.

Creo que lo que se comenta en estos hilos te puede servir para construir tu código:

Actualizar un datagridview (ref 1): https://www.aprenderaprogramar.com/foros/index.php?topic=1029

Actualizar un datagridview (ref 2): https://www.aprenderaprogramar.com/foros/index.php?topic=1502

Salu2

fezaca

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Modificar y guardar registro en Base de datos y DataGridView
« Respuesta #2 en: 30 de Julio 2015, 15:59 »
Hola amigos tengo tengo un formulario con un DataGridView 4 TextBox y un botón al marcar un registro me pasa los datos a los TextBox modifico el registro y al pulsar el boton para que me cambie los datos modificados en los TextBox solo me los cambia en el DataGridView, alguien me puede ayudar para que tambien me los cambie en la Base de Datos

Gracias

Código: [Seleccionar]
DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value = TextBox4.Text
 DataGridView1.Item(1, DataGridView1.CurrentRow.Index).Value = TextBox3.Text
 DataGridView1.Item(2, DataGridView1.CurrentRow.Index).Value = TextBox2.Text
 DataGridView1.Item(3, DataGridView1.CurrentRow.Index).Value = TextBox1.Text

 'Actualizamos los cambios en la BD, metodo UPDATE
        Me.BARCINOTableAdapter.Update(Me.REPUESTOSDataSet.BARCINO)
        Me.Validate()

fezaca

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Borrar registro de DataGridView y Base de Datos
« Respuesta #3 en: 02 de Agosto 2015, 19:51 »
Hola amigos os pido ayuda para poder borrar un registro del DataGridView y de la Base de Datos, tengo un formulario en el que tengo una DataGridView 4 TextBox y un boton, el codigo que tengo es ese de abajo que al pulsar una fila en el DataGridView me pasa los datos a los 4 TextBox y quisiera que al pulsar el boton eliminar me borrara el registro del DataGrid y la Base de Datos.
espero vuestra ayuda. Gracias


Código: [Seleccionar]

        TextBox4.Text = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value
        TextBox2.Text = DataGridView1.Item(1, DataGridView1.CurrentRow.Index).Value
        TextBox3.Text = DataGridView1.Item(2, DataGridView1.CurrentRow.Index).Value
        TextBox1.Text = DataGridView1.Item(3, DataGridView1.CurrentRow.Index).Value

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2052
    • Ver Perfil
Re:Visual Basic Datagridview modificar registro y guardar en base de datos
« Respuesta #4 en: 03 de Agosto 2015, 19:17 »
Código de ejemplo con conexión de DataGridView a una base de datos y añadir un registro nuevo, actualizarlo o borrar registros de la base de datos a partir del DataGridView

Código: [Seleccionar]
Imports System.Data.SqlClient
Public Class Form1
    Dim sCommand As SqlCommand
    Dim sAdapter As SqlDataAdapter
    Dim sBuilder As SqlCommandBuilder
    Dim sDs As DataSet
    Dim sTable As DataTable

    Private Sub load_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles load_btn.Click
        Dim connectionString As String = "Data Source=.;Initial Catalog=pubs;Integrated Security=True"
        Dim sql As String = "SELECT * FROM Clientes"
        Dim connection As New SqlConnection(connectionString)
        connection.Open()
        sCommand = New SqlCommand(sql, connection)
        sAdapter = New SqlDataAdapter(sCommand)
        sBuilder = New SqlCommandBuilder(sAdapter)
        sDs = New DataSet()
        sAdapter.Fill(sDs, "Clientes")
        sTable = sDs.Tables("Clientes")
        connection.Close()
        DataGridView1.DataSource = sDs.Tables("Clientes")
        DataGridView1.ReadOnly = True
        save_btn.Enabled = False
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

    End Sub

    Private Sub new_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles new_btn.Click
        DataGridView1.[ReadOnly] = False
        save_btn.Enabled = True
        new_btn.Enabled = False
        delete_btn.Enabled = False
    End Sub

    Private Sub delete_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles delete_btn.Click
        If MessageBox.Show("Do you want to delete this row ?", "Delete", MessageBoxButtons.YesNo) = DialogResult.Yes Then
            DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
            sAdapter.Update(sTable)
        End If
    End Sub

    Private Sub save_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save_btn.Click
        sAdapter.Update(sTable)
        DataGridView1.[ReadOnly] = True
        save_btn.Enabled = False
        new_btn.Enabled = True
        delete_btn.Enabled = True
    End Sub
End Class

Saludos

fezaca

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Gracias ya està solucionado

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2052
    • Ver Perfil
¿Puedes pegar el código que has utilizado?

fezaca

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Este es el código que utilizo y me funciona correctamente.

Otra pregunta aparte, quiero poner otro campo en mi tabla para incorporar foto tipo Objeto Ole pero esa opción (definir el campo como objeto Ole) no me sale en mi acces 2010 y he estado leyendo que hay que instalar un server Ole pero no se ni como instalarlo ni como obtenerlo ni cual, puedes ayudarme?.
Gracias

Código: [Seleccionar]
Private Sub Eliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Dim i As Integer
        i = DataGridView1.CurrentRow.Index
        DataGridView1.Rows.RemoveAt(i)

        Me.RIALTOTableAdapter.Update(Me.REPUESTOSDataSet.RIALTO)

        TextBox4.Text = ""
        TextBox3.Text = ""
        TextBox2.Text = ""
        TextBox1.Text = ""
    End Sub

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2074
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

En general se considera una mala práctica incrustar objetos, imágenes, videos de gran tamaño dentro de una base de datos. A nivel profesional lo más habitual es mantener una tabla con la ruta de los objetos, imágenes, videos, etc. y mediante código de programación recuperar esa ruta. Una vez recuperada la ruta, la usas para mostrar el objeto al usuario cuando sea necesario. De esta manera lo que almacenas en la base de datos es texto (que ocupa muy poco espacio de memoria) evitando que el tamaño de base de datos se haga excesivamente grande y evitando que la operación de la base de datos se vuelva lenta.

Nota: normalmente se trabaja con rutas relativas, de modo que si el sistema cambia de ubicación, el programa puede seguir funcionando sin necesidad de cambiar las rutas.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

fezaca

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Gracias por tu aclaración, como se hace una ruta relativa?, porque lo referente a gráficos no tengo ni idea.
Gracias

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2074
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Visual Basic Datagridview modificar registro y guardar en base de datos VB.NET
« Respuesta #10 en: 01 de Septiembre 2015, 08:54 »
Hola!

Tienes que hacer comprobaciones porque puede variar con la versión de Visual Studio que estés utilizando.

Habría varias formas de hacerlo.

Lo primero que debes saber es cuál es tu directorio raíz o directorio base, normalmente es el directorio donde se encuentra el fichero de proyecto (vcproj ó vcxproj).

Si tú creas una carpeta denominada imagenes en tu directorio raíz (donde se encuentre .cvproj) entonces la ruta relativa para acceder a un archivo que se llame imagen1.jpg es \imagenes\imagen1.jpg

Si te fijas no es una ruta tipo D:\Tmail_04\gsasl-1.0\lib\libgsaslMain\imagenes\imagen1.jpg que sería una ruta absoluta, sino que es una ruta relativa al directorio raíz.

Si el directorio estuviera un nivel por encima de tu directorio raíz tendrías que usar ..\ para indicar que se suba de nivel. Por ejemplo

..\\imagenes\imagen1.jpg te referencia a un nivel por encima de tu directorio raíz

También Visual Studio define macros que te permiten definir rutas. Por ejemplo $(ProjectDir) te devuelve la ruta a donde se encuentra el fichero .vcproj y $(SolutionDir) te devuelve la ruta a donde se encuentra el fichero .sln. También puedes probar con macros si quieres.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

fezaca

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 24
    • Ver Perfil
Re:Visual Basic Datagridview modificar registro y guardar en base de datos VB.NET
« Respuesta #11 en: 01 de Septiembre 2015, 11:59 »
Gracias por tu ayuda, lo estudiare tranquilamente.
Saludos y Gracias otra vez

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".