Hola jaullo y locojars
 
Yo estoy tratando de hacer lo mismo, pero se me presenta el mismo error me dice al asignar el resultado de la funcion que el oledbdatareader se encuentra cerrado. ¿Como solucionaron esto? 
La funcion que yo tengo es la siguiente  
Código:
  Public Function GetData(ByVal connection As String, ByVal TipoComando As CommandType, ByVal tabla As String, _
                            Optional ByVal campos As String = "*", Optional ByVal condicion As String = "") As Object
Dim Reader As OleDbDataReader
Using conOleReader As New OleDbConnection(connection)
With cmdOleDReader
.CommandType = TipoComando
  Select Case TipoComando
 Case CommandType.TableDirect
   .CommandText = tabla
 Case CommandType.Text
   If Not condicion Is vbNullString Then
        .CommandText = "select " & campos & " from " & tabla & " where " & condicion
   Else
      .CommandText = "select " & campos & " from " & tabla
                        End If
 Case CommandType.StoredProcedure
 End Select
       .Connection = conOleReader
 End With
            Try
                conOleReader.Open()
            Catch ex As Exception
                MsgBox(ex.Message)
                conOleReader.Dispose()
            End Try
            Reader = cmdOleDReader.ExecuteReader()
            GetData = Reader
            Reader.Close()
        End Using
    End Function
  
y lo llama por medio de este codigo 
Código:
  Dim drData As OleDbDataReader
 drData = GetData(My.Settings.mainCon, CommandType.TableDirect, "ixRevisionPacks")
  Les agradezco la ayuda