MONITORAR SE UM CAMPO DA TABELA FOI ALTERADO
Boa tarde amigos...
Estou com uma dúvida que não consigo solucionar e preciso da ajuda de vocês.
Criei um sistema que delega tarefas para os funcionários da empresa.
Cada funcionário loga no sistema com o seu usuário e senha, com isso, na Tabela Usuários criei um campo chamado STATUS que altera entre ON e OFF conforme o usuário loga no sistema.
Agora vem a dúvida. Preciso que quando eu logue no sistema, uma pequena janela com uma Listbox seja exibida, mostrando quem está ON baseado na tabela Usuários.
Até aà eu já consegui fazer, o problema é que eu gostaria que a cada 5 segundos, essa Listbox fosse atualizada enquanto ele estiver aberta, para saber quem ainda está ON ou quem acabou de entrar ou quem ficou OFF.
Tentei fazer esse procedimento dentro de um Timer, mas o ponteiro do mouse fica piscando a cada vez que ele atualiza.
Será que alguém tem alguma idéia que possa me ajudar ???
Estou com uma dúvida que não consigo solucionar e preciso da ajuda de vocês.
Criei um sistema que delega tarefas para os funcionários da empresa.
Cada funcionário loga no sistema com o seu usuário e senha, com isso, na Tabela Usuários criei um campo chamado STATUS que altera entre ON e OFF conforme o usuário loga no sistema.
Agora vem a dúvida. Preciso que quando eu logue no sistema, uma pequena janela com uma Listbox seja exibida, mostrando quem está ON baseado na tabela Usuários.
Até aà eu já consegui fazer, o problema é que eu gostaria que a cada 5 segundos, essa Listbox fosse atualizada enquanto ele estiver aberta, para saber quem ainda está ON ou quem acabou de entrar ou quem ficou OFF.
Tentei fazer esse procedimento dentro de um Timer, mas o ponteiro do mouse fica piscando a cada vez que ele atualiza.
Será que alguém tem alguma idéia que possa me ajudar ???
Coloque um DoEvents juntamente com o Timer, talvez melhore as piscadas.
Citação::
Coloque um DoEvents juntamente com o Timer, talvez melhore as piscadas.
Bom dia JABA...
Poderia demonstrar com um exemplo pra eu entender melhor ??? é que sou meio inexperiente nessa área.

http://forum.baboo.com.br/index.php?/topic/186102-doevents-o-que-%C3%A9-isso/
Postei uns meses atrás aqui no fórum uma rotina de [ô]refresh[ô] que mostra já de cara os registros atualizados quando o form é aberto, e daà com um timer ou até um botão que pode-se criar uma rotina automática a cada 5 segundos para apertar neste botão automático e assim a lista dos usuários vai atualizando conforme você quer.
Bom dia LUIZFGOMES e amigos,
Tenho um código com DoEvents que acredito resolver de forma eficiente o problema.
Preciso fazer um teste e me certificar disso, para poder enviar um exemplo como sugestão.
Essa rotina atua sem interferir na tela sem [Ô]piscadas[Ô] ou outras interferências.
No momento estou impossibilitado devido um pequeno problema de saúde causado pelo diabetes, que me trouxe até a UPA, para uma medicação rápida.
Tão logo eu esteja disponÃvel, darei uma resposta que poderá ser bem interessante.
Um abraço,
AAS.
é mais ou menos assim:
Do while DoEvents()
T1 = Time
Executa o programa
T2 = Time
If T2 - T1 > n segundos then
Scan Tabela
Atualiza Listbox
End if
Loop
Tenho um código com DoEvents que acredito resolver de forma eficiente o problema.
Preciso fazer um teste e me certificar disso, para poder enviar um exemplo como sugestão.
Essa rotina atua sem interferir na tela sem [Ô]piscadas[Ô] ou outras interferências.
No momento estou impossibilitado devido um pequeno problema de saúde causado pelo diabetes, que me trouxe até a UPA, para uma medicação rápida.
Tão logo eu esteja disponÃvel, darei uma resposta que poderá ser bem interessante.
Um abraço,
AAS.
é mais ou menos assim:
Do while DoEvents()
T1 = Time
Executa o programa
T2 = Time
If T2 - T1 > n segundos then
Scan Tabela
Atualiza Listbox
End if
Loop
Caro Luiz
Conforme prometido segue o programa exemplo. Espero ter contribuÃdo com idéias.
Um abraço
AAS
Conforme prometido segue o programa exemplo. Espero ter contribuÃdo com idéias.
Um abraço
AAS
Amigo,
Fiz uma versão 2 com alguns melhoramentos.
Segue DoEvents2.zip.
Um abraço,
AAS
Fiz uma versão 2 com alguns melhoramentos.
Segue DoEvents2.zip.
Um abraço,
AAS
Bom dia a todos...
Quero primeiramente agradecer a todos pela ajuda que se propuseram a me dar. Em atenção especial ao amigo Ademir, que mandou dois exemplos fantásticos de como resolver o meu problema.
Infelizmente não consegui adaptar os exemplos do Ademir ao meu código fonte.
Para uma melhor visualização do meu código, segue como estou fazendo a consulta no meu banco para saber se o colaborador está ON ou OFF:
Sub Conectados()
Dim conx As New ADODB.Connection
Dim FUNC As New ADODB.Recordset
conx.Open [Ô]DRIVER={Microsoft Access Driver (*.mdb)};dbq=\\10.14.249.201\cpd\programas\Agenda de Tarefas\BD.mdb[Ô]
Set FUNC = conx.Execute([Ô]select nome from usuarios where nome <> [ô][Ô] & frm_principal.Status.Panels(2) & [Ô][ô] and status = [ô]ON[ô] order by nome[Ô])
lst_colab.Clear
While Not FUNC.EOF
lst_colab.AddItem FUNC!nome
FUNC.MoveNext
Wend
End Sub
Se tiverem alguma ideia de como posso adaptar os códigos, agradeço muito.
Obrigados a todos
Quero primeiramente agradecer a todos pela ajuda que se propuseram a me dar. Em atenção especial ao amigo Ademir, que mandou dois exemplos fantásticos de como resolver o meu problema.
Infelizmente não consegui adaptar os exemplos do Ademir ao meu código fonte.
Para uma melhor visualização do meu código, segue como estou fazendo a consulta no meu banco para saber se o colaborador está ON ou OFF:
Sub Conectados()
Dim conx As New ADODB.Connection
Dim FUNC As New ADODB.Recordset
conx.Open [Ô]DRIVER={Microsoft Access Driver (*.mdb)};dbq=\\10.14.249.201\cpd\programas\Agenda de Tarefas\BD.mdb[Ô]
Set FUNC = conx.Execute([Ô]select nome from usuarios where nome <> [ô][Ô] & frm_principal.Status.Panels(2) & [Ô][ô] and status = [ô]ON[ô] order by nome[Ô])
lst_colab.Clear
While Not FUNC.EOF
lst_colab.AddItem FUNC!nome
FUNC.MoveNext
Wend
End Sub
Se tiverem alguma ideia de como posso adaptar os códigos, agradeço muito.
Obrigados a todos

Agora que fiquei sabendo qual o banco de dados, access, alias não é banco de dados.
Você não vai conseguir isso, esse tipo de controle não funciona 100% seguro, pois pode ocorrer o desligamento indevido da maquina, nesse caso o registro de controle ficara com o usuário como se estivesse logado.
Mas se utilizar o mysql por exemplo, basta executar a query: [Ô]show full processlist[Ô], que terá os usuários logados e inclusive o tempo de ociosidade dos logados, ai sim. De resto é quebra galho e não 100%
e em sistema, 99,99% não serve.
Você não vai conseguir isso, esse tipo de controle não funciona 100% seguro, pois pode ocorrer o desligamento indevido da maquina, nesse caso o registro de controle ficara com o usuário como se estivesse logado.
Mas se utilizar o mysql por exemplo, basta executar a query: [Ô]show full processlist[Ô], que terá os usuários logados e inclusive o tempo de ociosidade dos logados, ai sim. De resto é quebra galho e não 100%
e em sistema, 99,99% não serve.
Faça seu login para responder