Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema al actualizar un registro de una base de datos

Estas en el tema de Problema al actualizar un registro de una base de datos en el foro de .NET en Foros del Web. Hola compañeros, Tengo que actualizar un registro de una base de datos pero no lo consigo. No sé dónde estará el problema. Lo he probado ...
  #1 (permalink)  
Antiguo 27/09/2006, 03:43
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 6 meses
Puntos: 1
Problema al actualizar un registro de una base de datos

Hola compañeros,

Tengo que actualizar un registro de una base de datos pero no lo consigo. No sé dónde estará el problema. Lo he probado a hacer de dos formas pero ninguna funciona. Adjunto un fragmento del código por si me podéis ayudar,

Muchas gracias por anticipado

Código:
Public Shared Sub EjecutaHiloActualizaBD()
        'Definir en primer lugar una referencia a System.Data.dll
        Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Super.Pinwi\Mis documentos\Mis bases de datos\numeros\numeros.mdb")
        Dim objAcciones As New OleDbCommand
        Dim dt As DataTable
        Dim objAdapter As OleDbDataAdapter = New OleDbDataAdapter
        Dim OleDbUpdateCommand As OleDbCommand = New OleDbCommand
        Dim miDataSet As New DataSet
        'Variable de bucle
        Dim i As Integer
        'Para conocer el número de filas
        Dim n As Integer
        'Cadenas temporales para nombre y numero
        Dim sNombre As String
        Dim nNumero As Integer
        'Dim sTiempo As String
        Dim dr As DataRow '= dt.Rows()
        Dim fila As Integer

        Try
            objConn.Open()
            objAdapter = New OleDbDataAdapter("SELECT * FROM numeros ORDER BY numero", objConn)
            dt = New DataTable
            objAdapter.Fill(dt)
            n = dt.Rows.Count
            objAcciones.Connection = objConn
            objAdapter.UpdateCommand = OleDbUpdateCommand

            If n = 0 Then
                MessageBox.Show("No se ha encontrado ningún registro que coincida con la selección")
            Else
                For fila = 0 To n - 1
                    dr = dt.Rows(fila)
                    OleDbUpdateCommand.CommandText = "UPDATE Numeros " & "SET numero = 5"
                    OleDbUpdateCommand.Connection = objConn
                    miDataSet.Tables("numeros").Rows(fila).Item("numero") = 8
                    objAdapter.Update(miDataSet)
                    objAdapter.Fill(miDataSet, "numeros")
                    objAdapter.Update(miDataSet)
                    dr("numero") = 9
                    'asignarDatos(dr)
                    'For i = 0 To n - 1
                    'Asignar a las variables el contenido del registro
                    sNombre = dt.Rows(i)("nombre").ToString
                    nNumero = dt.Rows(i)("numero").ToString
                Next
            End If
        Catch ex As Exception
            MessageBox.Show(Err.Description, "Información del sistema")
        End Try
    End Sub
  #2 (permalink)  
Antiguo 27/09/2006, 15:03
 
Fecha de Ingreso: agosto-2006
Mensajes: 101
Antigüedad: 18 años, 6 meses
Puntos: 0
Pufff, que poquito me gusta usar los dataAdapters para hacer updates.
Los dataAdapters, para hacer inserts y para rellenar el dataset en un select. De updates y deletes, yo te recomiendo que lo hagas a mano.

Te paso un ejemplo a ver si te ayuda.
http://www.webprogramacion.com/registro.aspx?id=47

Un saludo.

Última edición por dvelazquez; 08/08/2007 a las 02:27
  #3 (permalink)  
Antiguo 28/09/2006, 01:19
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 19 años, 6 meses
Puntos: 1
Solucionado compañero Al final he utilizado el dataAdapter, pero funciona perfectamente.

Este es el código resultante:

Código:
Public Shared Sub EjecutaHiloActualizaBD()
        Dim objConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Super.Pinwi\Mis documentos\Mis bases de datos\numeros\numeros.mdb")
        Dim objAcciones As New OleDbCommand
        Dim dt As DataTable
        Dim objAdapter As OleDbDataAdapter = New OleDbDataAdapter
        Dim OleDbUpdateCommand As OleDbCommand = New OleDbCommand
        Dim miDataSet As New DataSet
        'Variable de bucle
        Dim i As Integer
        'Para conocer el número de filas
        Dim n As Integer
        'Cadenas temporales para nombre y numero
        Dim sNombre As String
        Dim nNumero As Integer
        Dim dr As DataRow
        Dim fila As Integer

        Try
            objConn.Open()
            objAdapter = New OleDbDataAdapter("SELECT * FROM numeros ORDER BY numero", objConn)
            dt = New DataTable
            objAdapter.Fill(dt)
            n = dt.Rows.Count
            objAcciones.Connection = objConn
            objAdapter.UpdateCommand = OleDbUpdateCommand
            MessageBox.Show("LLEGO HASTA AQUÍ")
            If n = 0 Then
                MessageBox.Show("No se ha encontrado ningún registro que coincida con la selección")
            Else
                For fila = 0 To n - 1
                    dr = dt.Rows(fila)
                    OleDbUpdateCommand.Connection = objConn
                    OleDbUpdateCommand.CommandText = "UPDATE Numeros " & "SET numero = 1982"
                    OleDbUpdateCommand.ExecuteNonQuery()
                Next
            End If
        Catch ex As Exception
            MessageBox.Show(Err.Description, "Información del sistema")
        End Try
    End Sub
Gracias por el interés y la ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:21.