none
Recorrer filas de datos con ExecuteReader RRS feed

  • Pregunta

  • Estoy trasladando una aplicación de VB6 a VB.NET, y para ello ocupo unas consultas de mi base de dato.

    Al momento de trasladarlo genero este código, pero no hace lo que yo requiero, ya que quisiera recorrer los datos de mi consulta pero solo me muestra la última fila.

    Sub proLimpia_RFC_TEL()        
     Dim strCadena As String = ""        
     Dim strCadena2 As String = ""        
     Dim strCadena3 As String = ""        
     Dim strCadena4 As String = ""        
     Dim strCadena5 As String = ""        
    
     strBD = "C:\Users\Usuario\Desktop\BC_Cinta\BC_PM.mdb"        
     cnConexion = New OleDb.OleDbConnection
     cnConexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & strBD & "';Jet OLEDB:Database Password=;"        
     cnConexion.Open()        
     oleComand = New OleDb.OleDbCommand("qryLimpiaRFCTel", cnConexion)        
     oleComand.CommandType = CommandType.StoredProcedure
     rs = oleComand.ExecuteReader
         
      While rs.Read()            
        strCadena = funLimpia1(Trim(rs(0).ToString))    '   --  cli_rfc            
        strCadena2 = funLimpia2(Trim(rs(1).ToString))   '   --  cli_telefono1            
        strCadena3 = funLimpia3(Trim(rs(2).ToString))   '   --  cli_calle            
        strCadena4 = funLimpia3(Trim(rs(3).ToString))   '   --  cli_colonia            
        strCadena5 = funLimpia3(CStr(IIf(IsDBNull(Trim(rs(4).ToString)), "", Trim(rs(4).ToString))))    '   --  Cli_calle2
        MsgBox(strCadena & vbNewLine & strCadena2 & vbNewLine & strCadena3 & vbNewLine & strCadena4 & vbNewLine & strCadena5)            
       End While    
    End Sub


    Estoy llegando a deducir que mi error esta en  rs = oleComand.ExecuteReader y rs.Read pero aun no estoy seguro.

    Agradezco sus comentarios.

    jueves, 1 de noviembre de 2018 17:02

Respuestas

  • Está bien tal como lo tienes. Si la query devuelve (por ejemplo) 10 registros, se te debería disparar 10 veces el MsgBox, cada una mostrando los valores de un registro distinto. Si no es eso lo que hace, sigue la ejecución paso a paso con el debugger hasta que encuentres que es lo que difiere. Por ejemplo, con el paso a paso puedes ver cuántas iteraciones hace en el bucle, qué valores asigna a cada iteración, etc.

    Por cierto, acuérdate de cerrar el datareader y la conexión. De lo contrario, al principio parecerá que no pasa nada, pero después de que el programa lleve algún rato rodando empezarás a recibir errores.

    jueves, 1 de noviembre de 2018 19:00