Usuário com melhor resposta
Criar filtros utilizando os critérios data inicial data final e placa do veículo

Pergunta
-
Bom dia !
Estou criando um formulário que inicialmente carrega as informações do meu banco de dados, porém preciso ter a opção de realizar alguns filtros que seriam entre a data inicial a data final e a placa do veículo.
Alguém poderia me ajudar com o comando
Respostas
-
Você pode usar filtros SQL também. Não é recomendável usar muito essa técnica, pois pode dar problemas de vazamento de memória em certos cenários, como deixar seus dados num LIstObject e inserir registros na tabela frequentemente:
Sub Main() Dim cn As Connection Dim NumRecords As Long Dim rs As ADODB.Recordset Dim sb As Collection Dim Sql As String Dim iLine As Variant Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" cn.Open Set sb = New Collection sb.Add "select *" sb.Add "from [Plan1$]" sb.Add "where [Placa] like 'AAA-%'" sb.Add " and [Motorista] = 'JOÃO'" sb.Add "order by [Motorista], [Placa]" For Each iLine In sb Sql = Sql & iLine & vbNewLine Next iLine Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open Sql, cn, adOpenForwardOnly, adLockReadOnly NumRecords = rs.RecordCount Do Until rs.EOF 'Código para povoar o ListView Debug.Print rs!Motorista, rs!Placa ' rs.MoveNext Loop rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
http://www.ambienteoffice.com.br - http://www.clarian.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 4 de julho de 2016 14:16
Todas as Respostas
-
Por exemplo, para filtrar todas as placas que começam AAA e com motoristas de nome JOÃO:
Sub Main() 'Em qual linha começam os dados? Const DATA_ROW As Long = 2 Dim i As Long Dim LastRow As Long Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Plan1") With ws LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row For i = 2 To LastRow If Not .Cells(i, "A") Like "AAA*" Then GoTo Continue If .Cells(i, "B") <> "JOÃO" Then GoTo Continue 'Aqui coloque a rotina para inserir os dados na ListView. Continue: Next i End With End Sub
http://www.ambienteoffice.com.br - http://www.clarian.com.br
- Marcado como Resposta Jannaina Silva quarta-feira, 6 de abril de 2016 20:28
- Não Marcado como Resposta Jannaina Silva quarta-feira, 6 de abril de 2016 20:28
-
Você pode usar filtros SQL também. Não é recomendável usar muito essa técnica, pois pode dar problemas de vazamento de memória em certos cenários, como deixar seus dados num LIstObject e inserir registros na tabela frequentemente:
Sub Main() Dim cn As Connection Dim NumRecords As Long Dim rs As ADODB.Recordset Dim sb As Collection Dim Sql As String Dim iLine As Variant Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & ThisWorkbook.FullName & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" cn.Open Set sb = New Collection sb.Add "select *" sb.Add "from [Plan1$]" sb.Add "where [Placa] like 'AAA-%'" sb.Add " and [Motorista] = 'JOÃO'" sb.Add "order by [Motorista], [Placa]" For Each iLine In sb Sql = Sql & iLine & vbNewLine Next iLine Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open Sql, cn, adOpenForwardOnly, adLockReadOnly NumRecords = rs.RecordCount Do Until rs.EOF 'Código para povoar o ListView Debug.Print rs!Motorista, rs!Placa ' rs.MoveNext Loop rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
http://www.ambienteoffice.com.br - http://www.clarian.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator segunda-feira, 4 de julho de 2016 14:16