Fórum Algumas situações ao incluir registros #469540
10/02/2014
0
Tem um banco de dados em access rodando em rede. Quando um usuário em seu PC mandar incluir um novo registro ele vai gerar o ID para o registro certo? Agora em outra estação outro usuário vai inserir um registro, se por acaso o outro usuário ainda não tiver salvo o registro esse registro aberto em outra estação vai ter o mesmo ID, ou seja, vai ter dois usuários em máquinas diferentes, cadastrando ao mesmo tempo dados em uma tabela e esses registros vão ter o mesmo ID. O primeiro que terminar e salvar não vai acontecer nada, vai salvar normalmente, mas o segundo vai dar um erro de chave duplicada e não vai salvar o registro, então ele vai ter que começar um novo processo de inclusão.
Como poderia fazer para sanar esse problema?
E outra coisa, quando um usuário salva um registro ele não fica visível para as outras máquinas, somente depois que outros usuários fecharem o programa e abrir de novo vai conseguir ver novos registros. Como poderia fazer para sanar mais esse problema?
Detalhes: Access, DataMódule, ADOTable. Não pode de forma alguma mudar esses componentes senão para todo o sistema.
Ricardo
Curtir tópico
+ 0Posts
10/02/2014
Marcos Saffran
quando você executa o programa ele já abre as tabelas e, com isso, elas ficam na memória de cada computador, para salvar recomendo que você feche a tabela, antes de salvar, abra-a, assim buscará os dados já atualizados.
Para os registros ficarem visíveis nas outras máquinas você terá que fechar as tabelas e abrí-las, em um sistema que tenho isso é feito para cada janela que abro.
Gostei + 0
11/02/2014
Ricardo
quando você executa o programa ele já abre as tabelas e, com isso, elas ficam na memória de cada computador, para salvar recomendo que você feche a tabela, antes de salvar, abra-a, assim buscará os dados já atualizados.
Para os registros ficarem visíveis nas outras máquinas você terá que fechar as tabelas e abrí-las, em um sistema que tenho isso é feito para cada janela que abro.
Agradeço a todos os colegas que deram suas opiniões, mas resolvi diferente com uma lógica que me veio na mente durante a noite rsrsr
O que eu fiz foi (depois quero saber o que acham)
Para amenizar a situação eu criei no form um botão chamado "recuperação" e no botão de salvar eu criei variáveis(32 rsrs) que armazenam antes do post os valores de todos os campos. Então se por acaso no momento de salvar o registro já exista um ID ele vai mostar a mensagem de chave duplicada bla... bla... bla... assim que fechar jenela da mensagem o botão recuperação fica visível para o usuário e quando o usuário clica nele ele executa (na ordem) as funções do botão cancelar, novo registro, recupera o valor das variáveis em todos os campos e executa a função do botão salvar.
Então se aparecer o erro, o usuário clica no ok para fechar a janela de erro e clica no botão recuperação só isso.
Testado e funcionando 100%. Sei que na verdade deveria verificar se os ID esta duplicado no memento do append e/ou post, mas como nesse formulário está ligado a duas tabelas relacionadas, tudo que foi forma de fazer não tá dando certo, e essa alternativa foi a "última carta" que tinha na manga na ocasião.
O que vocês acham?
Gostei + 0
11/02/2014
Marcos Saffran
em programação há várias formas de se atingir um objetivo.
Como a sua maneira não parece que vai afetar a performance do sistema e está funcionando, tenho que dar os parabéns.
Gostei + 0
11/02/2014
Ricardo
em programação há várias formas de se atingir um objetivo.
Como a sua maneira não parece que vai afetar a performance do sistema e está funcionando, tenho que dar os parabéns.
Valeu aê.
Creio que não vai afetar pois só vai carregar as variáveis no momento que clicar no botão salvar antes de executar o post e o usuário só vai recuperar essas varáveis nos campos do formulário caso apresente o erro de chave duplicada e impeça a gravação. Quando fechar o formulário as variáveis vão ser zeradas, então acho q não dá nada.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)