frutuopa Posted November 8, 2021 at 09:02 AM Report Share #624496 Posted November 8, 2021 at 09:02 AM Bom Dia Quero saber quando foi adicionado um novo registo a uma determinada tabela no Mysql. A forma classica é com um timmer. ... mas o timmer obriga-me a interrogar a database repetidamente. Achei depois que o conseguiria com um BindingSource, associado a uma textbox por exemplo, aproveitando depois o evento textchanged.... Mas preciso sempre de actualizar a BindingSource. Depois tentei faze-lo a partir de um trigger que chamaria uma rotina externa... Mas desisti, já qe preciso de levar a atualização a todos clientes do programa. Utilizo muito HMI controls que fornecem um interface com as variaveis de um PLC... Cada mudança do estado de uma variavel do PLC, posso trata-la no evento equivalente ao texttchanged... Não preciso de estar a recorrer a um timmer... Não sei se fui claro.... Mas há alguma coisa parecida com isto, para monitorar a base de dados ? Obrigado Paulo Frutuoso Link to comment Share on other sites More sharing options...
M6 Posted November 8, 2021 at 09:59 AM Report Share #624497 Posted November 8, 2021 at 09:59 AM Partindo do principio de que as atualizações são unicamente feitas a partir da aplicação e nunca por eventos externos à mesma, podes fazer isso de várias formas: - implementar um sistema de mensagens/queue em que sempre que a aplicação insere (ou faz outro tipo de alteração) um registo é enviada uma mensagem para a queue em que quem tem interesse/necessidade pode consultar; - implementar um sistema de web services em que que sempre que a aplicação insere (ou faz outro tipo de alteração) um registo é feita uma chamada a esse web service que pode registar essa informação e fazer broad cast para quem tem interesse/necessidade de saber que ocorreram alterações; - podes ter um trigger nas tabelas que escrevem essa informação numa tabela que se encontra noutra base de dados e servidor distintos em que quem tem interesse/necessidade pode consultar regularmente; por questões de performance e dado que essa base de dados seria minúscula se guardasse apenas, por exemplo, a entidade, id e timestamp da última atualização, pode fazer sentido ter uma base de dados em memória, sendo que poderás ter de necessitar de um carregamento inicial sempre que esta base de dados arrancar; - poder ter uma solução idêntica à de anterior mas mantendo um registo num ficheiro, no entanto esta abordagem pode não ser a melhor por questões de acesso concorrencial; Há mais soluções, e podes até implementar um misto entre algumas delas. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
frutuopa Posted November 8, 2021 at 11:11 AM Author Report Share #624498 Posted November 8, 2021 at 11:11 AM Muito Obrigado pela tua resposta As actualizações podem ser externas a aplicação... Embora não consiga evitar o timmer, a tua 3ª hipotese, a do trigger parece-me a mais viavel. O WebSevice vou consira-la como 2ª hipotese... As mensagens/queue nunca fiz nada com elas e não sabendo..... Paulo Frutuoso Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now