CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 VB.NET + ACCESS Como Modificar un Registro

(1/2) > >>

datawox:
Hola a todos!
Mi problema es el siguiente: Tengo un Form el cual lo abro con los datos de un registro que quiero modificar.
Pero tengo un código que lo unico que hace es añadirme otro registro mas...en vez de modificar el ó los campos que quiero.

El código es:

'====================================================================================
'====================================================================================

Try
            'Crear la Tabla
            Dim tablaVales As String = "SELECT * FROM Vales WHERE Id=" & txtId.Text


            ' Crear un nuevo objeto del tipo DataAdapter
            Using da = New OleDbDataAdapter(tablaVales, conexion)

                ' Crear los comandos de insertar, actualizar y eliminar
                Dim cb As New OleDbCommandBuilder(da)

                dt = New DataTable

                ' Llenar la tabla con los datos indicados
                da.Fill(dt)

                ' Crear un nuevo registro
                Dim dr As DataRow = dt.NewRow()
                ' Asignar los datos de los textbox a la fila
                'asignarDatos(dr)
                dr("Numero") = txtNumero.Text
                dr("Fecha") = dataFecha.Value
                dr("Familia") = cboFamilia.Text
                dr("Maquina") = cboDescripcion.Text
                dr("Horas") = txtHoras.Text
                dr("Precio") = txtPrecio.Text
                dr("Total") = txtTotal.Text

                ' Añadir la nueva fila a la tabla
                dt.Rows.Add(dr)
                ' Guardar físicamente los datos en la base

                da.Update(dt)

                dt.AcceptChanges()
                ' Si es el primer registro de la base,
                ' volver a leer los datos para actualizar los IDs
                If CInt("0" & dr("Id").ToString) = 0 Then
                    dt = New DataTable
                    da.Fill(dt)

                End If

                'Cerramos el Form
                Me.Close()

            End Using

'====================================================================================
'====================================================================================

He probado cambiar la consulta y poner UPDATE.. pero no me reconoce la tabla, me dice que el indice esta a cero... y no me hace nada.
Agradeceria cualquier duda.
Gracias

Jeysscarr:
Cuando creas el la tabla deberias cargar los datos sin filtrar (SELECT * FROM Vales)

despues filtrarlos mediante el dataTable con el metodo Select , esto te devuelve una matriz de datarows de la cual te interesa la primera...
FilaBuscada as DataRow=Dt.Select("id="& txtid.text)(0);

a FilaBuscada es a quien le vas a volver a asignar los datos para despues atualizarlos con el dataadapter.update(FilaBuscada);

datawox:
Hola!
Primero que nada Gracias... por tu contestación tan rapida.
Mira lo he hecho asi:

'==================================================
'==================================================
Try
            'Crear la Tabla
            Dim tablaVales As String = "SELECT * FROM Vales"


            ' Crear un nuevo objeto del tipo DataAdapter
            Using da = New OleDbDataAdapter(tablaVales, conexion)

                ' Crear los comandos de insertar, actualizar y eliminar
                Dim cb As New OleDbCommandBuilder(da)

                dt = New DataTable

                ' Llenar la tabla con los datos indicados
                da.Update(dt)

                ' Crear un nuevo registro
                Dim FilaBuscada As DataRow = dt.Select("Id=" & txtId.Text)(0)
                ' Asignar los datos de los textbox a la fila
                'asignarDatos(dr)
                FilaBuscada("Numero") = txtNumero.Text
                FilaBuscada("Fecha") = dataFecha.Value
                FilaBuscada("Familia") = cboFamilia.Text
                FilaBuscada("Maquina") = cboDescripcion.Text
                FilaBuscada("Horas") = txtHoras.Text
                FilaBuscada("Precio") = txtPrecio.Text
                FilaBuscada("Total") = txtTotal.Text

               
                da.Update(FilaBuscada)

                FilaBuscada.AcceptChanges()
               
                'Cerramos el Form
                Me.Close()

            End Using
'==================================
'==================================

Pero me da error... en la linea: da.Update(FilaBuscada)
Me subrraya la linea diciendo: Error de resolución de sobrecarga porque ninguna de las funciones Update a las que se tiene acceso, se puede llamar con estos argumentos.

Que es lo que tengo mal?

Gracias

Jeysscarr:
Lo unico que veo es que creas el dataadapter pero no usas el metodo fill del datatable para llenar la tabla con los registros de la consulta select
osea que estas buscando datos en una tabla vacia....

datawox:
La verdad es que he probado muchas cosas pero no doy con lo correcto....

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa