• Sábado 20 de Julio de 2024, 20:25

Autor Tema:  Actualizar tabla Access con datagrid  (Leído 6839 veces)

pirlespi

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Actualizar tabla Access con datagrid
« en: Jueves 1 de Agosto de 2013, 13:42 »
0
Muy buenas,

De nuevo me encuentro con un problema con los datagrid.

He creado un segundo form que recupera los datos de una tabla en Access y los filtra en base a un textbox del formulario principal. También tengo unos textbox que al rellenarlos crean un nuevo registro en el datagrid junto a los recuperados de la BBDD.

El problema es que, cuando lo cierro, los datos no se guardan en la tabla de access, quedando solo los que ya existian.

¿alguien podría indicarme como realizar esto?

Este es el código que tengo hasta ahora:

Código: [Seleccionar]
Public Class Form2


    Dim conexion As OleDb.OleDbConnection
    Dim MiDt As New DataTable
    Dim BdS As Windows.Forms.BindingSource
    Dim Scon As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=BBDD.mdb"
   

    Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        conexion = New OleDb.OleDbConnection(Scon)
        conexion.Open()
        Try
            Dim MiDa As New OleDbDataAdapter("SELECT siniestro, fecha, obs FROM evolutivo WHERE siniestro = '" & Form1.NumeroTextBox.Text & "'", conexion)
            MiDt.Clear()
            MiDa.Fill(MiDt)
            BdS = New BindingSource
            BdS.DataSource = MiDt
            Me.DataGridView1.DataSource = BdS.DataSource

        End Try
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dt As DataTable = DirectCast(DataGridView1.DataSource, DataTable)

        Dim row As DataRow = dt.NewRow()

        'asignas los campos

        dt.Rows.Add(Form1.NumeroTextBox.Text, DateTimePicker1.Text, TextBox2.Text)

    End Sub

End Class

He intentado añadir al evento Button1_Click lo siguiente:

Código: [Seleccionar]
        With MiDa
            .InsertCommand = New System.Data.OleDb.OleDbCommand
            .InsertCommand.Connection = conexion
            .InsertCommand.CommandText = "INSERT INTO evolutivo(siniestro,fecha,obs) VALUES (@siniestro,@fecha,@obs)"
        End With

        Me.MiDa.Update(CType(Me.MiDt, DataTable))

Pero me al ejecutarlo me salta el siguiente error: "No se han especificado valores para algunos de los parámetros requeridos."

Muchas gracias!

José Alberto

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re:Actualizar tabla Access con datagrid
« Respuesta #1 en: Domingo 4 de Agosto de 2013, 20:26 »
0
Hola Pirlespi: Antes que nada quiero aclararte que no es mi intención pedirte que cambies el código de tu programa, quiero darte ésta alternativa que he utilizado y me ha funcionado:
Yo también trabajo con Acces y le creo una conexión ODBC, en el windowsform creo un objeto dataset con todas las tablas con las que trabajaré, creo un objeto BindingSource y automáticamente el Visual Basic me crea el objeto TableAdapter y por último creo el datagridview o el Listview para mostrar los datos, son estos los objetos necesarios para manejar datos desde cualquier tipo de base de datos.
Cuando quiero ingresar datos en la base de datos utilizo el siguiente código:

Private Sub INGRESAR_DATOS()

        Dim nuevafilaClave As DataRow = Me.DSHistorias.Tables("HISTORIAS").NewRow

        nuevafilaClave("Fecha_Historia") = Me.txtFechaH.Text
        nuevafilaClave("Nombre") = Me.txtNombresH.Text
        nuevafilaClave("Edad") = Me.txtEdadH.Text
        nuevafilaClave("Sexo") = Me.txtSexoH.Text
        nuevafilaClave("Direccion") = Me.txtDireccionH.Text
        nuevafilaClave("Telefono") = Me.txtTelfHab.Text
        nuevafilaClave("Celular") = Me.txtTelfCel.Text
        nuevafilaClave("Referencia") = Me.txtReferido.Text
        nuevafilaClave("Motivo") = Me.txtMotivoConsulta.Text
        nuevafilaClave("Antecedente") = Me.txtAntecedentes.Text
        nuevafilaClave("Tratamientos") = Me.txtTratamientoMed.Text
        nuevafilaClave("Alergia") = Me.txtAlergia.Text
        nuevafilaClave("Habitos") = Me.txtHabitos.Text

        Me.DSHistorias.Tables("HISTORIAS").Rows.Add(nuevafilaClave)
        Me.HistoriasTableAdapter.Update(Me.DSHistorias.Tables("HISTORIAS"))

    End Sub

DSHistorias es el dataset que contiene la tabla HISTORIAS

Yo estuve varios días tratando de averiguar cómo podía ingresar y guardar los datos en la base de datos y fue difícil conseguir ayuda en la web, sólo en los foros pudieron ayudarme, ni siquiera la ayuda de Microsoft o la del Visual Studio tienen la información exacta.
Espero que te sirva de algo

pirlespi

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re:Actualizar tabla Access con datagrid
« Respuesta #2 en: Lunes 5 de Agosto de 2013, 13:23 »
0
Muy buenas Jose Alberto,

Te agradezco mucho tu post, aunque finalmente no he usado el código que me pasabas, me ha servido para "caer del burro".
Lo que he hecho ha sido poner un INSERT y arreglado.

Un saludo y gracias!

Código: [Seleccionar]
       Try
            conexion2 = New OleDb.OleDbConnection(Scon2)
            conexion2.Open()
            cmd = New OleDb.OleDbCommand("INSERT INTO evolutivo (siniestro, fecha, obs) values
 ('" + FormPrincipal.NumeroTextBox.Text + "', '" + DateTimePicker1.Text + "', '" + TextBox2.Text + "')", conexion2)

            cmd.ExecuteNonQuery()