|
|
|
|
|
Dicas
|
|
Visual Basic (Banco de Dados)
|
|
|
Título da Dica: Filtrar Recordset já aberto - DAO
|
|
|
|
Postada em 8/10/2000 por Webmaster
webmaster@vbweb.com.br
Já tentou usar o método FILTER? Ex:
Sub FilterX() Dim dbsNorthwind As Database Dim rstPedidos As Recordset Dim intPedidos As Integer Dim strPaís As String Dim rstPedidosPaís As Recordset Dim strMessage As String
Set dbsNorthwind = OpenDatabase("Northwind.mdb") Set rstPedidos = dbsNorthwind.OpenRecordset("Pedidos", _ dbOpenSnapshot)
'Preenche o Recordset. rstPedidos.MoveLast intPedidos = rstPedidos.RecordCount
'Obtém a entrada do usuário. strPaís = Trim(InputBox("Digite um " & _ "país para filtrar em:"))
If strPaís <> "" Then 'Abre um objeto Recordset filtrado. Set rstPedidosPaís = FilterField(rstPedidos, _ "PaísDeDestino", strPaís) With rstPedidosPaís 'Verifica RecordCount antes de preencher o Recordset; 'caso contrário, um erro pode ser gerado. If .RecordCount <> 0 Then .MoveLast
'Imprime o número de registros do objeto Recordset 'original e do objeto Recordset filtrado. strMessage = "Pedidos no conjunto de registros " & _ "original: " & vbCr & intPedidos & vbCr & _ "Pedidos no conjunto de registros " & _ "filtrado (País = '" & strPaís & "'): " & _ vbCr & .RecordCount MsgBox strMessage .Close End With End If rstPedidos.Close dbsNorthwind.Close End Sub
Function FilterField(rstTemp As Recordset, strField As _ String, strFilter As String) As Recordset 'Define um filtro no objeto Recordset especificado e em 'seguida abre um novo objeto Recordset. rstTemp.Filter = strField & " = '" & strFilter & "'" Set FilterField = rstTemp.OpenRecordset End Function Observação Para ver os efeitos de filtrar rstPedidos, você deve definir sua propriedade Filter e, em seguida, abrir um segundo objeto Recordset baseado em rstPedidos. Observação: Quando você conhece os dados que deseja selecionar, em geral é mais eficiente criar um Recordset com uma instrução SQL. Este exemplo mostra como você pode criar apenas um Recordset e obter os registros de um país específico.
Sub FilterX2() Dim dbsNorthwind As Database Dim rstPedidos As Recordset Set dbsNorthwind = OpenDatabase("Northwind.mdb")
'Abre um objeto Recordset que seleciona registros de 'uma tabela baseada no país da remessa. Set rstPedidos = dbsNorthwind.OpenRecordset("SELECT * " & _ "FROM Pedidos WHERE PaísDeDestino = " & _ "'USA'", dbOpenSnapshot) rstPedidos.Close dbsNorthwind.Close End Function
|
|
|
|
|