
11/02/2003, 06:53
|
 | 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 |