Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/02/2003, 06:53
Avatar de DanielRey
DanielRey
Usuario no validado
 
Fecha de Ingreso: enero-2001
Ubicación: Mendoza
Mensajes: 630
Antigüedad: 24 años, 3 meses
Puntos: 1
Ejemplo de las propiedades Filter y RecordCount

Este ejemplo utiliza la propiedad Filter para abrir un nuevo objeto Recordset basado en una condición especificada aplicada a un objeto Recordset existente. Utiliza la propiedad RecordCount para mostrar el número de registros de ambos objetos Recordset. La función FilterField es necesaria para poder ejecutar este procedimiento.

Public Sub FilterX()

Dim rstPublishers As ADODB.Recordset
Dim rstPublishersCountry As ADODB.Recordset
Dim strCnn As String
Dim intPublisherCount As Integer
Dim strCountry As String
Dim strMessage As String

' Abre un objeto Recordset con datos de la tabla Editores.
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
Set rstPublishers = New ADODB.Recordset
rstPublishers.CursorType = adOpenStatic
rstPublishers.Open "editores", strCnn, , , adCmdTable

' Llena el objeto Recordset.
intPublisherCount = rstPublishers.RecordCount

' Obtiene la entrada del usuario.
strCountry = Trim(InputBox( _
"Escriba el país por el que desea filtrar:"))

If strCountry <> "" Then
' Abre un objeto Recordset filtrado.
Set rstPublishersCountry = _
FilterField(rstPublishers, "País", strCountry)

If rstPublishersCountry.RecordCount = 0 Then
MsgBox "No hay editores de ese país."
Else
' Imprime el número de registros del objeto Recordset
' original y del objeto Recordset filtrado.
strMessage = "Pedidos del conjunto de registros original: " & _
vbCr & intPublisherCount & vbCr & _
"Pedidos del conjunto de registros filtrado (País = '" & _
strCountry & "'): " & vbCr & _
rstPublishersCountry.RecordCount
MsgBox strMessage
End If
rstPublishersCountry.Close

End If

End Sub

Public Function FilterField(rstTemp As ADODB.Recordset, _
strField As String, strFilter As String) As ADODB.Recordset

' Establece un filtro sobre el objeto Recordset especificado y,
' después, abre un nuevo objeto Recordset.
rstTemp.Filter = strField & " = '" & strFilter & "'"
Set FilterField = rstTemp

End Function



Nota Cuando se conocen los datos que se desean seleccionar, suele ser más eficiente abrir un objeto Recordset con una instrucción SQL. El ejemplo siguiente ilustra cómo se puede crear un único objeto Recordset y obtener registros de un país específico.

Public Sub FilterX2()

Dim rstPublishers As ADODB.Recordset
Dim strCnn As String

' Abre un objeto Recordset con datos de la tabla Editores.
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
Set rstPublishers = New ADODB.Recordset
rstPublishers.CursorType = adOpenStatic
rstPublishers.Open "SELECT * FROM Editores " & _
"WHERE País = 'EE.UU.'", strCnn, , , adCmdText

' Imprime los datos actuales en un objeto Recordset.
rstPublishers.MoveFirst
Do While Not rstPublishers.EOF
Debug.Print rstPublishers!pub_name & ", " & _
rstPublishers!country
rstPublishers.MoveNext
Loop

rstPublishers.Close

End Sub