Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Pesquisa com datas

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Pesquisa com datas

Mensagem por pedro_mexico »

Boa noite amigos,
Procurava uma pequena ajuda com codigo para fazer a pesquisa numa listview por data de inicio e data fim.
Nao sei o que se passa com o codigo,pois se colocar poucas linhas de dados na planilha , ele estava a funcionar, mas quando colei o codigo no meu ficheiro principal ele deixa de fazer a pesquisa correctamente
nao percebo se é o codigo ou dos dados da planilha.

Código: Selecionar todos

Private Sub CommandButton2_Click()
'Butao pesquisa por data inicial e data final'
 On Error GoTo final

 Dim Tmp As Long
    Dim I As Long
    Dim sDtIni As Date
    Dim sDtFim As Date
    
    Tmp = UserForm_Menu.ListView3.ListItems.Count
    
        If TextBoxDataInicial = "" Then
                MsgBox "Digite uma Data Valida", , "Data Inicial Obrigatória !!!"
                TextBoxDataInicial.SetFocus
            Exit Sub
        ElseIf TextBoxDataFinal = "" Then
                MsgBox "Digite uma Data Valida", , "Data Final Obrigatória !!!"
                TextBoxDataFinal.SetFocus
            Exit Sub
    
        End If
    
    sDtIni = TextBoxDataInicial.Value
    sDtFim = TextBoxDataFinal.Value

    For I = 1 To Tmp
    
        With ListView3
            If .ListItems(I).SubItems(3) < sDtIni Then
                UserForm_Menu.ListView3.ListItems.Remove I
                    I = I - 1
                    Tmp = Tmp - 1
                        If I = Tmp Then Exit For
                            Tmp = UserForm_Menu.ListView3.ListItems.Count
         End If
           If .ListItems(I).SubItems(3) > sDtFim Then
                UserForm_Menu.ListView3.ListItems.Remove I
                    I = I - 1
                    Tmp = Tmp - 1
                        If I = Tmp Then Exit For
                            Tmp = UserForm_Menu.ListView3.ListItems.Count
                        
            ElseIf .ListItems(I).SubItems(3) = sDtFim Then
            
                    Tmp = Tmp ' 1
                        If I = Tmp Then Exit For
                            Tmp = UserForm_Menu.ListView3.ListItems.Count
  
            End If
                 
        End With

    Next
final:
End Sub
em anexo vai ficheiro para se alguem conseguir achar algum erro ou adaptar.
Obrigado
Anexos
Mapa Viaturas.rar
(1.15 MiB) Baixado 160 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Pesquisa com datas

Mensagem por Mikel Silveira Fraga »

Pedro, boa noite.

Caro amigo, pelo que percebi, para realizar esse filtro, você esta preenchendo o ListView, para depois eliminar as linhas que não correspondem ao Período de Data determinado na busca.

Ao invés disso, pq não carregar no ListView, somente os itens que atenderem ao intervalo de datas estipulado pelo usuário, ou seja, que esteja dentro do intervalo de Data Inicio e Data Fim?

Caso tenha dúvidas sobre como fazer isso, dê uma olhada nesses dois vídeos que publiquei um tempo atrás, onde mostro a diferença entre ListView e ListBox. No exemplo, tem uma estrutura de filtro utilizada, que pode ser facilmente adaptada para sua necessidade.

Seguem os links:
- ListBox e ListView: Preenchimento de Filtro - pt.1
- ListBox e ListView: Preenchimento de Filtro - pt.2

Espero que esses vídeos possam lhe ajudar.

Abraços e excelente final de semana.


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Pesquisa com datas

Mensagem por pedro_mexico »

Bom dia Mikel,
Ainda nao vi o seu video, mas na descriçao vai ter a um link com um ficheiro, e como percebo pouco de vba, estou pouco a pouco tentando adaptar ao meu formulario o basico de programaçao vba, o codigo que tem no seu ficheiro é muio á frente, fico logo perdido quando abro o formulario e na pesquisa dá valores, mas na planilha nao encontro os dados que voce tem.
Ja percebi que o seu formulario esta a abrir um ficheiro oculto, mas logo ai tras problemas para o meu pequeno conhecimento de vba.

envio o anexo do ficheiro que voce tinha no seu site
Anexos
ModeloCadastrov3ListView.zip
(69.99 KiB) Baixado 162 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Pesquisa com datas

Mensagem por Reinaldo »

Talvez o exemplo viewtopic.php?f=23&t=3002&p=15470&hilit ... ew1#p15470 na sala "Modelos Prontos" o auxilie


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Pesquisa com datas

Mensagem por pedro_mexico »

Boa noite Reinaldo,
Ja tentei adaptar esse codigo no meu formulario, mas nao sei a razao ele no meu formulario nao pesquisa direito, nao sei se é alguma coisa com a adaptaçao do codigo ou se é problema na planilha.
com o codigo adapatado, quando coloco as datas ele elimina uma ou outro valor e mostra valores fora das datas que faço o filtro, o formulario que enviei inicialmente esta com o codigo desse modelo que indicou


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Pesquisa com datas

Mensagem por Reinaldo »

...as datas ele elimina...
Pelo que vi (ja bom tempo atraz, por sinal uma excelente solução mas que pessoalmente não utilizo, prefiro como propos o colega Mikel recarregar o controle com os dados filtrados) essa e a "essência" da rotina proposta; ou seja: excluir do listbox ou listiview não recordo; datas que não atendam ao critério e se não me engano eram 3 ou quatro rotinas para atender uma data, 2 datas, um texto e um texto + duas datas; assim e necessario atentar aos sinais"<" ou ">" ou "="


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder