none
Como Leer próximo registro de una tabla access con Visual Basic 2012 RRS feed

  • Pregunta

  • Bueno ías experto, Gusto en saludarle.

    Necesito leer toda una tabla access y hacer update a cada registro de la mima tabla, en el programa e crea la lectura solo con el primer registro, no va al siguiente, por cada registro leído hago update en el mimo, a continuación le envío el programa: 

    leo = "select * FROM Pagos_Pend where Nro_InmuebleP > 0"
            adaptador = New OleDb.OleDbDataAdapter(leo, conexion)
            registro = New DataSet
            adaptador.Fill(registro, "Pagos_Pend")
            lista = registro.Tables("Pagos_Pend").Rows.Count
            Do While cant_regPP < lista
                
                'Tabla de Registros Maestros, Clave= Código de Apto  (Leer toda la tabla)
                leo = "select * FROM Pagos_Pend where Nro_InmuebleP > " & inmueble & " order by Nro_InmuebleP"
                adaptador = New OleDb.OleDbDataAdapter(leo, conexion)
                registro = New DataSet
                adaptador.Fill(registro, "Pagos_Pend")

                Dim dt As DataTable = registro.Tables("Pagos_Pend")
                Dim Fechacomp2 As DateTime
                Dim Fechacomp As DateTime = Date.Now.ToString("MM/yyyy")
                Dim Fechaproc1 As DateTime = CDate(dt.Rows(0).Item("Fecha_Proc")).Date
                Dim Fechacomp1 As DateTime = CDate(dt.Rows(0).Item("Fecha_Mant")).Date
                apto1 = registro.Tables("Pagos_Pend").Rows(0).Item("Nro_InmuebleP")
                calinter1 = registro.Tables("Pagos_Pend").Rows(0).Item("Pago_Mant")
                inter = registro.Tables("Pagos_Pend").Rows(0).Item("Int_Pago_Mant")
                Pagototal = registro.Tables("Pagos_Pend").Rows(0).Item("Pago_Total")
                Fechacomp2 = Fechacomp1.ToString("MM/yyyy")
                cant_regPP = cant_regPP + 1
                inmueble = apto1
                MsgBox("antes del UPDATE (" & inmueble & "    " & apto1 & "         " & calculo2 & "      " & wtotgen & ")")
                porcent = 7
                'registro.Tables.Add("Pagos_Pend")
                wtotpagmant2 = calinter1.ToString("##.00")    ' ENMASCARAR EL MONTO DE MANTENIMIENTO MENSUAL
                calculo = (wtotpagmant2 * porcent) / 100    ' CALCULO INTERES
                calculo2 = calculo.ToString("##.00") + inter        ' ENMASCARAR MONTO
                wtotgeneral = calculo2.ToString("##.00") + wtotpagmant2   ' SUMAR MONTO INTERES CON EL DE MANTENIMIENTO
                wtotgen = wtotgeneral.ToString("##.00")

    actualizar = ("UPDATE Pagos_Pend SET Int_Pago_Mant = " & calculo2 & ", Pago_Total = " & wtotgen & " WHERE  Nro_InmuebleP =  " & inmueble & " ")
                ' Dim cmd2 As New OleDb.OleDbCommand(actualizar, conexion)

    cmdc.ExecuteNonQuery()

    Loop

    Agradezco todo el apoyo para poder leer toda la tabla y actualizarla.

    Saludo Cordiales para todo.


    Rafael

    jueves, 2 de agosto de 2018 18:34

Respuestas

  • Primero, antes del Do While debes igualar cant_regPP a cero

    cant_regPP  = 0

    luego llevar la linea cant_regPP = cant_regPP + 1 exactamente un antes de Loop

           cant_regPP = cant_regPP + 1

    Loop

    y por ultimo debes mover el indice de lo que lees y excribes de acuerdo al registro que estas leyendo, ya que tu siempre estas en 0 (cero) que viene siendo el primero y nunca te mueves de ahi.

    ej:

    cambiar:

    apto1 = registro.Tables("Pagos_Pend").Rows(0).Item("Nro_InmuebleP")por:

    apto1 = registro.Tables("Pagos_Pend").Rows(cant_regPP).Item("Nro_InmuebleP")

    o sea cambiar todos los 0 por cant_regPP 

    Saludos

    y no olvides marcar como respuesta si lo que te digo es correcto.

    • Marcado como respuesta Pablo Rubio lunes, 6 de agosto de 2018 16:10
    viernes, 3 de agosto de 2018 17:21