DUVIDA SOBRE ATUALIZAR DADOS DOS FORMS
Os dados do form2 só serão atualizados quando ele fizer uma nova busca no banco de dados...
Eu não atualizo e os meus usuários estão cientes que funcionam assim...
Citação::
é assim mesmp que funciona...
Os dados do form2 só serão atualizados quando ele fizer uma nova busca no banco de dados...
Eu não atualizo e os meus usuários estão cientes que funcionam assim...
Essa confiança no usuário não dá prá ter no meu caso. Eu dei esse exemplo do nome de agência com erro de digitação, mas poderia ser algo bem mais sério (valores, etc.).
O usuário pode, de repente, esquecer que os dados não estão atualizados naquele Form e imprimir relatórios que vão para a gerência, diretoria, etc. e esse erro se propagar por vários setores da empresa, e a culpa vai cair em quem desenvolveu o sistema. é muito arriscado. Além disso, me parece uma obrigação o sistema manter uma consistência dos dados que estão sendo apresentados em tela.
Vou ter que pensar em alguma coisa, mas valeu pela colaboração.
1 - Você tem algum artefato(cadastro) que possui registros dependentes e são apresentados em telas diferentes(master - detalhe)
2 - Quando você abrir a tela dos detalhes, você quer que a tela Master(pai), seja frequentemente atualizada com dados do banco, caso estes tenha mudado.
3 - Atualizando a tela pai, você quer que a tela filha também seja atualizada.
é isso mesmo?
Citação::
Vamos entender o que você está querendo:
1 - Você tem algum artefato(cadastro) que possui registros dependentes e são apresentados em telas diferentes(master - detalhe)
2 - Quando você abrir a tela dos detalhes, você quer que a tela Master(pai), seja frequentemente atualizada com dados do banco, caso estes tenha mudado.
3 - Atualizando a tela pai, você quer que a tela filha também seja atualizada.
é isso mesmo?
Bem, eu não sou muito bom nessas terminologias que você usou. Vou tentar usar uma forma simples de explicar:
- Há uma tebela de Clientes (Form2) e uma tabela de Bancos/Agencias (Form1).
- A tabela de Clientes possui um campo CodAgencia que é chave estrangeira relacionada ao campo CodAgencia da tabela Bancos/Agencias.
- Ambos os forms podem ser abertos na tela.
- O usuário percebe que o nome da Agencia que aparece num registro de Cliente que ele está vendo possui um erro de digitação e o corrige na tabela de Bancos/Agencias.
- Após salvar a informação corrigida na tabela Bancos/Agencia, ela não aparece de imediato no registro de Clientes que está na tela. Só vai aparecer se a tabela de Clientes for fechada e reaberta.
- O usuário pode continuar com a informação desatualizada na tela e mandar imprimir, por exemplo, obtendo um relatório com dados incorretos.
é necessário atualizar o registro de Cliente com a nova informação. E aqui há duas situações:
1) o usuário pode estar consultando o registro de Cliente
2) o usuário pode estar editando/inserindo o registro de Cliente.
Essa é toda a questão. Espero ter explicado melhor.
Se tiver alguma ideia, agradeço.
2 - No cadastro de cliente, você provavelmente grava o código do registro da tabela de agências. Então alterando o valor do campo agência, não alteraria necessariamente o registro do cliente. Nesse caso, estaria sim desatualizado a tela.
3 - Impressão é UMA CONSULTA de dados e deve ser baseada numa consulta de dados e não nos campos da tela. Portanto, mesmo que altere o valor do campo agência com a tela do cliente aberta, quando a impressão for feita, o valor correto deve ser buscado normalmente.
4 - Uma alternativa para resolver isso, seria colocar a leitura dos dados da tela de clientes no evento Activate do form de clientes. Porém isso gera um pequeno empecÃlho. Digamos que o usuário abra a tela de clientes para alterar algo além da agência. Ele abre e os dados estão lá, altera alguns campos e depois abre a tela de agências e altera o valor lá. Ao voltar para a tela de cliente, o evento Activate vai ser executado e os dados salvos no banco(não o que os usuário alterou) vão estar aparecendo, fazendo o operador perder o que tinha alterado(além de ficar furioso, xingar sua mãe e querer pular pela janela). Então o que resta é fazer assim: Ao abrir a tela de cadastro de agências, abra-a em modo modal, isso faz com que o código [Ô]pare[Ô] de executar no formulário de cliente, ficando parado na abertura do form de agências. Logo após o comando de abrir o form de agências, coloque o código para consultar o cliente aberto, e atualize SOMENTE O CAMPO CORRESPONDENTE DA AGÊNCIA.
Citação::
1- Quando o número da agência estiver errado na tabela de agências e o mesmo for alterado, não significa que na tabela de clientes o valor do mesmo vai ser alterado também. Suponho que o código da agência NÃO seja a chave primária da tabela e sim algum outro campo de enumeração ou coisa parecida.
2 - No cadastro de cliente, você provavelmente grava o código do registro da tabela de agências. Então alterando o valor do campo agência, não alteraria necessariamente o registro do cliente. Nesse caso, estaria sim desatualizado a tela.
3 - Impressão é UMA CONSULTA de dados e deve ser baseada numa consulta de dados e não nos campos da tela. Portanto, mesmo que altere o valor do campo agência com a tela do cliente aberta, quando a impressão for feita, o valor correto deve ser buscado normalmente.
4 - Uma alternativa para resolver isso, seria colocar a leitura dos dados da tela de clientes no evento Activate do form de clientes. Porém isso gera um pequeno empecÃlho. Digamos que o usuário abra a tela de clientes para alterar algo além da agência. Ele abre e os dados estão lá, altera alguns campos e depois abre a tela de agências e altera o valor lá. Ao voltar para a tela de cliente, o evento Activate vai ser executado e os dados salvos no banco(não o que os usuário alterou) vão estar aparecendo, fazendo o operador perder o que tinha alterado(além de ficar furioso, xingar sua mãe e querer pular pela janela). Então o que resta é fazer assim: Ao abrir a tela de cadastro de agências, abra-a em modo modal, isso faz com que o código [Ô]pare[Ô] de executar no formulário de cliente, ficando parado na abertura do form de agências. Logo após o comando de abrir o form de agências, coloque o código para consultar o cliente aberto, e atualize SOMENTE O CAMPO CORRESPONDENTE DA AGÊNCIA.
Primeiramente, agradeço a atenção pelo meu problema.
A situação é bem mais complexa do que eu pensei e as soluções não são fáceis de fazer e ainda fica aquela imagem de quebra-galho.
Baseado no que você explicou, estou pensando em fazer o seguinte:
1) O form de Agencias abre em modo Modal e o usuário altera o que for necessário.
2) Quando ele for fechado e o usuário voltar para o form de Clientes, no evento Activate deste poderia haver comandos para verificar se houve alguma alteração nos campos que estão ligados à tabela de Agencias.
Não sei ainda como fazer isso, só estou pensando. O que você acha?