Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/08/2011, 18:04
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años, 8 meses
Puntos: 6
Respuesta: Paginación Top

hola a todos:

le encontré la vuelta a esto pero lo que quiero es simplificar código fuente acá les dejo por sí me quieren ayudar:

Módulo de Clase:

Option Explicit
'Propiedades
Public PaginaActual As Long
Public Total_Paginas As Long
Public Registros_Por_Pagina As Long
Public sql As String
'Variables locales ( para el Listview, para la _
conexión ADO y para la acción de navegación por las páginas )
Private m_ListView As ListView
Private m_Accion As String
Private m_Connection As ADODB.Connection
'Sub que llena el ListView ( recibe como parámetro la conexión ADO)
'************************************************* **************************
Private Sub Cargar_ListView()
Dim rst As New ADODB.Recordset
Dim Registros As Long
Dim columna As Integer
If PaginaActual = 0 Then
PaginaActual = 1
End If
Total_Paginas = PaginaActual
m_ListView.ListItems.Clear
m_ListView.ColumnHeaders.Clear
rst.PageSize = Registros_Por_Pagina
Call rst.Open(sql, m_Connection, adOpenKeyset)
If Total_Paginas <= rst.PageCount Then
rst.AbsolutePage = Total_Paginas
End If
Total_Paginas = rst.PageCount
For columna = 0 To rst.Fields.Count - 1
m_ListView.ColumnHeaders.Add , , rst.Fields(columna).Name
Next
Do While Not rst.EOF
Registros = Registros + 1
Dim Item As ListItem
Set Item = m_ListView.ListItems.Add(, , rst.Fields(0).Value)
For columna = 1 To rst.Fields.Count - 1
Item.SubItems(columna) = rst.Fields(columna).Value
Next
rst.MoveNext
If (Registros >= Registros_Por_Pagina) Or (rst.EOF) Then
Exit Sub
End If
Loop
End Sub
'********************************************
' Subrutinas y funciones
'********************************************
'--------------------------------------------------------------
'Navegación por las páginas
'--------------------------------------------------------------
'Navega a la primer página del recordset
Sub FirstPage()
m_Accion = "PRIMER_PAGINA"
Call Calcular_Pagina
End Sub
'Navega a la Anterior página del recordset
Sub PreviousPage()
m_Accion = "ANTERIOR"
Call Calcular_Pagina
End Sub
' Va a la Siguiente página del recordset
Sub NexPage()
m_Accion = "SIGUIENTE"
Call Calcular_Pagina
End Sub
' Va a la última página del recordset
Sub LastPage()
m_Accion = "ULTIMA_PAGINA"
Call Calcular_Pagina
End Sub
' Navega al número de pagina indicado por el parámetro
Sub GoToPage(Pagina As Long)
PaginaActual = Pagina 'Asigna la página
Call Cargar_ListView 'Carga
End Sub
Private Sub Calcular_Pagina()
' Verifica la opción de navegación que se eligíó, para _
establecer el valor de la variable --> PaginaActual
If m_Accion = "PRIMER_PAGINA" Then
PaginaActual = 1
ElseIf m_Accion = "ANTERIOR" Then
If PaginaActual > 1 Then
PaginaActual = PaginaActual - 1
End If
ElseIf m_Accion = "SIGUIENTE" Then
If PaginaActual < Total_Paginas Then
PaginaActual = PaginaActual + 1
End If
ElseIf m_Accion = "ULTIMA_PAGINA" Then
PaginaActual = Total_Paginas
End If
Call Cargar_ListView
End Sub
'********************************************
'Propiedades
'********************************************
'Para la Conexión ADO
Public Property Set Connection(Conexion_ADODB As ADODB.Connection)
Set m_Connection = Conexion_ADODB
End Property
' Propiedad para el ListView
Public Property Get ListView() As Object
Set ListView = m_ListView
End Property
Public Property Set ListView(v_ListView As Object)
Set m_ListView = v_ListView
End Property
Public Property Let ListView(v_ListView As Object)
Set m_ListView = v_ListView
End Property

Formulario:

Option Explicit
'************************************************* **************************
'* Agregar la referencia a Microsoft ADO
'************************************************* **************************
Dim obj As New Class1
'Variable para la conexión ADODB
Dim cnn As New ADODB.Connection
'************************************************* **************************
' Botones para navegar por las páginas del recordset
'************************************************* **************************
Private Sub Cmd_Nav_Registros_Click(Index As Integer)
Select Case Index
'Navega a la primer página del Recordset
Case 0: obj.FirstPage
'Navega a la anterior del Recordset
Case 1: obj.PreviousPage
'Navega a la siguiente página del Recordset
Case 2: obj.NexPage
'Navega a la última del Recordset
Case 3: obj.LastPage
End Select
End Sub
' Load
'************************************************* **************************
Private Sub Form_Load()
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.ConnectionString = "C:\Archivos de programa\Microsoft Visual Studio\VB98\NWIND.MDB"
cnn.Open
Set obj.Connection = cnn
obj.sql = "Select * FROM [Detalles de pedidos]"

obj.Registros_Por_Pagina = 100
obj.ListView = ListView1
Call obj.GoToPage(1)
End Sub

sí pueden responder este mensaje y ayudarme a esto se los agradezco.