CLR: .Net / Mono / Boo / Otros CLR > VB .NET
VB.NET + ACCESS Como Modificar un Registro
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
[#] Página Siguiente
Ir a la versión completa