REALIZAR PESQUISA AO PARAR DE DIGITAR NO TEXTBOX
BOA TARDE
GOSTARIA DE VERIFICAR SE é POSSÃVEL INCLUIR ALGUMA INSTRUÇÃO NO TEXTBOX ONDE EU POSSA REALIZAR A PESQUISA NO BANCO DE DADOS ASSIM QUE PARAR DE DIGITAR
ESTOU USANDO ESTE COMANDO NO TEXTBOX
Private Sub TxtConsultaDescricao_KeyUp(KeyCode As Integer, Shift As Integer)
LblInforma.Caption = [Ô]CONSULTA DO MOVIMENTO GERAL POR DESCRIÇÃO[Ô]
If TxtConsultaDescricao <> Empty Then
CarregaFlexPesquisa
Else
CarregaFlex
End If
End Sub
DESTA FORMA FICA MUITO LENTO POISA A CADA TECLA PRESSIONADA A PESQUISA é REALIZADA, POR ISSO PRECISO REALIZAR ESTA ALTERAÇÃO ONDE A RESQUISA SEJA INICIADA QUANDO O USUARIO PARA DE TECLAR, ISSO SEM USAR BOTOES OU TECLAS ADICIONAIS
TENTEI COLOCAR UM TIMER ONDE ELE ZERA A CADA TECLA DIGITADA MAS NÃO FUNCIONOU
Private Sub TxtConsultaDescricao_KeyUp(KeyCode As Integer, Shift As Integer)
Somatempo = 0
If SomaTempo > 0 Then
LblInforma.Caption = [Ô]CONSULTA DO MOVIMENTO GERAL POR DESCRIÇÃO[Ô]
If TxtConsultaDescricao <> Empty Then
CarregaFlexPesquisa
Else
CarregaFlex
End If
End If
End Sub
Private Sub Timer1_Timer()
SomaTempo = SomaTempo + 1
End Sub
Obrigado
JAIR
GOSTARIA DE VERIFICAR SE é POSSÃVEL INCLUIR ALGUMA INSTRUÇÃO NO TEXTBOX ONDE EU POSSA REALIZAR A PESQUISA NO BANCO DE DADOS ASSIM QUE PARAR DE DIGITAR
ESTOU USANDO ESTE COMANDO NO TEXTBOX
Private Sub TxtConsultaDescricao_KeyUp(KeyCode As Integer, Shift As Integer)
LblInforma.Caption = [Ô]CONSULTA DO MOVIMENTO GERAL POR DESCRIÇÃO[Ô]
If TxtConsultaDescricao <> Empty Then
CarregaFlexPesquisa
Else
CarregaFlex
End If
End Sub
DESTA FORMA FICA MUITO LENTO POISA A CADA TECLA PRESSIONADA A PESQUISA é REALIZADA, POR ISSO PRECISO REALIZAR ESTA ALTERAÇÃO ONDE A RESQUISA SEJA INICIADA QUANDO O USUARIO PARA DE TECLAR, ISSO SEM USAR BOTOES OU TECLAS ADICIONAIS
TENTEI COLOCAR UM TIMER ONDE ELE ZERA A CADA TECLA DIGITADA MAS NÃO FUNCIONOU
Private Sub TxtConsultaDescricao_KeyUp(KeyCode As Integer, Shift As Integer)
Somatempo = 0
If SomaTempo > 0 Then
LblInforma.Caption = [Ô]CONSULTA DO MOVIMENTO GERAL POR DESCRIÇÃO[Ô]
If TxtConsultaDescricao <> Empty Then
CarregaFlexPesquisa
Else
CarregaFlex
End If
End If
End Sub
Private Sub Timer1_Timer()
SomaTempo = SomaTempo + 1
End Sub
Obrigado
JAIR
Bom, muito utilizado é o evento chamado LostFocus...
BOA NALDOXD
ENTÃO NA VERDADE O CURSOS NÃO SAI DA DA CAIXA DE TEXTO,
PENSO ASSIM
AO DIGITAR é PRESSIONADO UMA TECLA SEGUIDA DA OUTRA, CERTO?
SE HOUVER UM INTERVALO DE TEMPO ENTRE O QUE FOI DIGITADO E O CURSOR ESTIVER PARADO ELE REALIZA A CONSULTA.
UM EXEMPLO
AO DIGITAR [Ô]JAIR[Ô] O CURSOR FICOU PARADO NA POSIÇÃO 5 DA CAIXA DE TEXTO E SE NADA FOR DIGITADO APÓS 0,02 SEGUNDOS ELE REALIZA A PESQUISA.
ISSO PODE SER EM QUALQUER POSIÇÃO DA CAIXA DE TEXTO O PONTO é O CURSOR FICOU PARADO COM ALGO DIGITADO INICIA A PESQUISA ... SEM TER QUE COLOCAR UM BOTÃO PARA CLICAR TIPO PESQUISAR
ISSO JÃ ACONTECE NO EVENTO KEY MAS A PESQUISA E REALIZADA EM CADA TECLA PRESSIONADA ISSO DEIXA MUITO LENTO A PESQUISA
JAIR
ENTÃO NA VERDADE O CURSOS NÃO SAI DA DA CAIXA DE TEXTO,
PENSO ASSIM
AO DIGITAR é PRESSIONADO UMA TECLA SEGUIDA DA OUTRA, CERTO?
SE HOUVER UM INTERVALO DE TEMPO ENTRE O QUE FOI DIGITADO E O CURSOR ESTIVER PARADO ELE REALIZA A CONSULTA.
UM EXEMPLO
AO DIGITAR [Ô]JAIR[Ô] O CURSOR FICOU PARADO NA POSIÇÃO 5 DA CAIXA DE TEXTO E SE NADA FOR DIGITADO APÓS 0,02 SEGUNDOS ELE REALIZA A PESQUISA.
ISSO PODE SER EM QUALQUER POSIÇÃO DA CAIXA DE TEXTO O PONTO é O CURSOR FICOU PARADO COM ALGO DIGITADO INICIA A PESQUISA ... SEM TER QUE COLOCAR UM BOTÃO PARA CLICAR TIPO PESQUISAR
ISSO JÃ ACONTECE NO EVENTO KEY MAS A PESQUISA E REALIZADA EM CADA TECLA PRESSIONADA ISSO DEIXA MUITO LENTO A PESQUISA
JAIR
BOA NALDOXD
ENTÃO NA VERDADE O CURSOS NÃO SAI DA DA CAIXA DE TEXTO,
PENSO ASSIM
AO DIGITAR é PRESSIONADO UMA TECLA SEGUIDA DA OUTRA, CERTO?
SE HOUVER UM INTERVALO DE TEMPO ENTRE O QUE FOI DIGITADO E O CURSOR ESTIVER PARADO ELE REALIZA A CONSULTA.
UM EXEMPLO
AO DIGITAR [Ô]JAIR[Ô] O CURSOR FICOU PARADO NA POSIÇÃO 5 DA CAIXA DE TEXTO E SE NADA FOR DIGITADO APÓS 0,02 SEGUNDOS ELE REALIZA A PESQUISA.
ISSO PODE SER EM QUALQUER POSIÇÃO DA CAIXA DE TEXTO O PONTO é O CURSOR FICOU PARADO COM ALGO DIGITADO INICIA A PESQUISA ... SEM TER QUE COLOCAR UM BOTÃO PARA CLICAR TIPO PESQUISAR
ISSO JÃ ACONTECE NO EVENTO KEY MAS A PESQUISA E REALIZADA EM CADA TECLA PRESSIONADA ISSO DEIXA MUITO LENTO A PESQUISA
JAIR
ENTÃO NA VERDADE O CURSOS NÃO SAI DA DA CAIXA DE TEXTO,
PENSO ASSIM
AO DIGITAR é PRESSIONADO UMA TECLA SEGUIDA DA OUTRA, CERTO?
SE HOUVER UM INTERVALO DE TEMPO ENTRE O QUE FOI DIGITADO E O CURSOR ESTIVER PARADO ELE REALIZA A CONSULTA.
UM EXEMPLO
AO DIGITAR [Ô]JAIR[Ô] O CURSOR FICOU PARADO NA POSIÇÃO 5 DA CAIXA DE TEXTO E SE NADA FOR DIGITADO APÓS 0,02 SEGUNDOS ELE REALIZA A PESQUISA.
ISSO PODE SER EM QUALQUER POSIÇÃO DA CAIXA DE TEXTO O PONTO é O CURSOR FICOU PARADO COM ALGO DIGITADO INICIA A PESQUISA ... SEM TER QUE COLOCAR UM BOTÃO PARA CLICAR TIPO PESQUISAR
ISSO JÃ ACONTECE NO EVENTO KEY MAS A PESQUISA E REALIZADA EM CADA TECLA PRESSIONADA ISSO DEIXA MUITO LENTO A PESQUISA
JAIR
Olá,
Este seu code não funciona porque vc zera a variavel Somatempo e na linha a seguir vai perguntar se ela é maior que 0, o timer só executa quando essa rotina do key_up estiver concluida... mesmo que vc coloque um [Ô]DoEvents[Ô], a linha [Ô]If SomaTempo > 0 Then[Ô] será sempre executada primeiro que o timer mesmo que o timer só tenha 1 de [Ô]interval[Ô].
Outra coisa são os seus 0.02 segundos, se vc escreve mais rapido que isso então vc escreve mais de 50 letras num segundo....
Veja este exemplo:
No interval do timer coloque 50 (0,05 segundos), isto dará 0,35 segundos depois de digitar uma letra.
Veja aà se o ajuda, depois diga qualquer coisa..
Té +
Private Sub TxtConsultaDescricao_KeyUp(KeyCode As Integer, Shift As Integer)
Somatempo = 0
If SomaTempo > 0 Then
LblInforma.Caption = [Ô]CONSULTA DO MOVIMENTO GERAL POR DESCRIÇÃO[Ô]
If TxtConsultaDescricao <> Empty Then
CarregaFlexPesquisa
Else
CarregaFlex
End If
End If
End Sub
Private Sub Timer1_Timer()
SomaTempo = SomaTempo + 1
End Sub
Este seu code não funciona porque vc zera a variavel Somatempo e na linha a seguir vai perguntar se ela é maior que 0, o timer só executa quando essa rotina do key_up estiver concluida... mesmo que vc coloque um [Ô]DoEvents[Ô], a linha [Ô]If SomaTempo > 0 Then[Ô] será sempre executada primeiro que o timer mesmo que o timer só tenha 1 de [Ô]interval[Ô].
Outra coisa são os seus 0.02 segundos, se vc escreve mais rapido que isso então vc escreve mais de 50 letras num segundo....
Veja este exemplo:
Option Explicit
Private Declare Function GetTickCount Lib [Ô]kernel32[Ô] () As Long
Dim lTempo As Long
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
lTempo = GetTickCount
Me.Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If GetTickCount - lTempo > 300 Then [ô]0,3 segundos
[ô]Sua pesquisa aqui
Debug.Print [Ô]pesquisa[Ô]
Me.Timer1.Enabled = False
End If
End Sub
No interval do timer coloque 50 (0,05 segundos), isto dará 0,35 segundos depois de digitar uma letra.
Veja aà se o ajuda, depois diga qualquer coisa..
Té +
o timer vai tornar a pesquisa tão lenta quanto o keyup, primeiro que a agilidade vai ser do objeto que exibe os dados da pesquisa, e outra pra que reinventar a roda não é, solução simples e direta ao clicar em enter é feito a pesquisa.
digite o que quiser pressione ENTER e pronto.
um exemplo que ajuda a preencher o flexgrid muito mais rápido é este.
o simples fato de desativar a barra de rolagem no preenchimento já ajuda.
Private Sub TxtConsultaDescricao_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
LblInforma.Caption = [Ô]CONSULTA DO MOVIMENTO GERAL POR DESCRIÇÃO[Ô]
If TxtConsultaDescricao <> Empty Then
CarregaFlexPesquisa
Else
CarregaFlex
End If
End If
End Sub
digite o que quiser pressione ENTER e pronto.
um exemplo que ajuda a preencher o flexgrid muito mais rápido é este.
Sub TesteFlexGrid()
Dim I As Long
MSFlexGrid1.ScrollBars = flexScrollBarNone
For I = 0 To 100000
MSFlexGrid1.AddItem I
Next I
MSFlexGrid1.ScrollBars = flexScrollBarBoth
End Sub
o simples fato de desativar a barra de rolagem no preenchimento já ajuda.
Vou dar o meu pitaco.
Do Marcelo.
[txt-color=#e80000]o timer vai tornar a pesquisa tão lenta quanto o keyup, primeiro que a agilidade vai ser do objeto que exibe os dados da pesquisa, e outra pra que reinventar a roda não é.[/txt-color]
Essa é uma forma de pesquisa excelente usando o LIKE.
Mude,em vez de usar MSFLEXGRID ou MSHFLEXGRID use LISTVIEW,é mais rápido.
Para que voltar ao tempo antes da invenção da roda.
Do Marcelo.
[txt-color=#e80000]o timer vai tornar a pesquisa tão lenta quanto o keyup, primeiro que a agilidade vai ser do objeto que exibe os dados da pesquisa, e outra pra que reinventar a roda não é.[/txt-color]
Essa é uma forma de pesquisa excelente usando o LIKE.
Mude,em vez de usar MSFLEXGRID ou MSHFLEXGRID use LISTVIEW,é mais rápido.
Para que voltar ao tempo antes da invenção da roda.
Tópico encerrado , respostas não são mais permitidas