Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

[SOLUCIONADO] Paginación Top

Estas en el tema de Paginación Top en el foro de Visual Basic clásico en Foros del Web. Hola a todos nuevamente vengo a ustedes para saber lo sgte: Supongamos que tengo 500 registros de base de datos, lo que quiero hacer es ...
  #1 (permalink)  
Antiguo 29/07/2011, 19:04
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Paginación Top

Hola a todos nuevamente vengo a ustedes para saber lo sgte:

Supongamos que tengo 500 registros de base de datos, lo que quiero hacer es lo con 4 botones:
Primero: que me muestre las primeras 11 filas de la base de datos.
Anterior: que me muestre las anteriores 11 filas de la base de datos.
siguiente: que me muestre las próximas 11 filas de la base de datos.
Último: que me muestre las ÚLTIMAS 11 filas de la base de datos.

utilizo vb 6.0 con access 2003 además uso SQL y el Listview.
Me fije en www.recursosvisualbasic.com.ar y me parece largo el código fuente y vi un comando sql que es este:

SELECT TOP 2 * FROM articulos;

para hacer un poco lo que quiero, ¿me pueden ayudar? se los agradezco.
  #2 (permalink)  
Antiguo 08/08/2011, 18:04
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
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.
  #3 (permalink)  
Antiguo 09/08/2011, 08:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 1
Antigüedad: 12 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Paginación Top

Estimado detective_jd: Chequea este enlace, puede serte útil. Es sobre la paginación que estás buscando. Lo hace con la función Count() de SQL.

http://sqlraipon.blogspot.com/2008/09/devolver-n-registros.html

Espero te sea útil.

Saludos.

Etiquetas: basic, sql, top, vb, visual
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 15:31.