
02/08/2002, 19:54
|
| | Fecha de Ingreso: enero-2002
Mensajes: 189
Antigüedad: 23 años, 3 meses Puntos: 0 | |
Re: paginacion: uso de cahesize 'Metodo que ejecuta un sp y devuelve un recordset paginado
Public Function execProcedurePage(ByVal intNumReg As Integer, ByVal intNumPag As Integer, ByRef intNumPagTot As Variant, ByRef intNumRegTot As Variant, ByVal strSP As String, ParamArray params() As Variant) As ADODB.Recordset
On Error GoTo Exception
'Declarando objetos Origen
Dim rstSource As ADODB.Recordset
Dim rstDestino As ADODB.Recordset
Dim cmd As ADODB.Command
Dim intPos, intPosicionFinal As Byte
'Instanciando objetos ADO
Set rstSource = CreateObject("ADODB.Recordset")
Set rstDestino = CreateObject("ADODB.Recordset")
Set cmd = CreateObject("ADODB.Command")
'Seteando parametros de objeto command
cmd.ActiveConnection = GetConnectionString()
cmd.CommandText = strSP
cmd.CommandType = adCmdStoredProc
'Asignando parametros
setParameter cmd, params
'Seteando parametros de objeto recordset
rstSource.CursorLocation = adUseServer 'cursor de servido
rstSource.CursorType = adOpenStatic
rstSource.LockType = adLockReadOnly
'Inicializando valores de paginación
rstSource.PageSize = intNumReg
rstSource.CacheSize = intNumReg
'Ejecutando operación
rstSource.Open cmd
'Creando recordset destino con la misma estructura de origen
For intPos = 0 To rstSource.Fields.Count - 1
rstDestino.Fields.Append rstSource.Fields(intPos).Name, rstSource.Fields(intPos).Type, rstSource.Fields(intPos).DefinedSize, rstSource.Fields(intPos).Attributes
Next
'Inicializando valores de paginación de objeto destino
If rstSource.RecordCount > 0 Then
intNumPagTot = rstSource.PageCount
intNumRegTot = rstSource.RecordCount
rstSource.AbsolutePage = intNumPag
intPosicionFinal = intNumReg * intNumPag
End If |