MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


5 participantes

    Formulário com Subformulário desacoplados

    avatar
    wilflx2
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 31/01/2014

    Formulário com Subformulário desacoplados Empty Formulário com Subformulário desacoplados

    Mensagem  wilflx2 13/4/2018, 00:38

    Boa noite aos grandes mestres!

    Venha recorrer a uma solução que não encontrei em nenhum lugar da net, até mesmo aqui, procurei em outros fóruns, em paginas, vi até videos em inglês, porem, não encontrei nada parecido que pudesse me ensinar a resolver.

    Desenvolvi um banco de dados onde cadastro os pedidos de exames médicos da clinica onde trabalho, usei de começo as ferramentas básicas do Access , formulários acoplados e macros, com o passar do tempo fui melhorando o sistema e passei a usar mais o VBA. Aprendi a trabalhar e criar formulários desacoplados, visando mais fluidez e segurança nos registros, até ai tudo bem, agora meu problema está em como trabalhar com formulários com subformulários desacoplados. No meu formulário de cadastro principal, insiro o digamos "cabeçalho" do pedido do exame (Nome, Data de Nascimento, Prontuario e etc.) e no subformulário lanço os exames solicitados pelo médico (Raio X Torax, Ultrassom, Mamografias e etc.).

    Vamos a estrutura do banco.
    Tenho duas tabelas:

    Nome da tabela: tab1
    Campos: Id - Nome - DataNascimento - DataPedido - Prontuario - MedicoSolic - Autorizacao - Etc...

    Nome da tabela: tab2
    Campos: Id2 - TipoExame - Exame - Qtda - Valor - Local - Etc...

    Nome do formulário pai: frmPECad
    Nome do subformulário: frmPECadSub

    Formulário com Subformulário desacoplados <a href=Formulário com Subformulário desacoplados Frmpec10" />

    Ao clicar no botão "Novo Exame" abre um novo formulário onde cadastro os exames solicitados, que são inseridos na tab2, assim usando um requery no subformulário, aparece instantaneamente o exame cadastrado.

    Formulário com Subformulário desacoplados <a href=Formulário com Subformulário desacoplados Frmpec11" />

    Minha dúvida:
    Como faço para vincular o formulário Pai e o Filho desacoplados?
    Não consigo fazer o formulário filho filtrar os dados referentes ao formulário pai. Uso Uma SQL para buscar os dados? Se sim como seria o código?

    Agradeço desde já a atenção.
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  CassioFabre 13/4/2018, 18:09

    Boa tarde,

    A ideia é bem simples. Na tabela onde cadastrar os dados do formulário PAI você tem um campo de identificação para cada registro. Suponho que neste caso seja o campo Id. O que você tem que fazer é inserir este campo na tabela que dá origem ao subformulário e cadastrar o Id do registro PAI neste campo. Quando você fizer as querys para resgatar o registro, usará como identificador este campo que está presente nas duas tabelas. Sua estrutura ficará assim:

    Nome da tabela: tab1
    Campos: Id - Nome - DataNascimento - DataPedido - Prontuario - MedicoSolic - Autorizacao - Etc...

    Nome da tabela: tab2
    Campos: Id2 - IdPai - TipoExame - Exame - Qtda - Valor - Local - Etc...

    Você não necessariamente tem que colocar o nome "IdPai", foi apenas um exemplo. O imprescindível é o valor deste campo ser igual ao valor do campo Id da tab1 do registro correspondente. Depois disso, basta filtrar usando-o na cláusula WHERE do sql.

    Abraço.


    .................................................................................
    Só não tem código pra morte!
    avatar
    wilflx2
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 31/01/2014

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  wilflx2 16/4/2018, 14:02

    Obrigado pela resposta CassioFabre!

    Eu já tenho essa estrutura na tabela, no caso eu refiz todo o programa criando dessa forma na tabela, ficou assim:

    Tab1: IdPedido - Nome - DataNascimento - etc...

    Tab2: IdItem - IdPedido - TipoExame - etc...

    Usando o SQL como você disse dá certo, inseri no evento ao carregar o formulário, agora me deparei com outro problema, quando uso o a ligação que o próprio Access faz você pode inserir os dados tanto no formulário pai, como no filho, e se por acaso clicar em Cancelar ele não salva nas duas tabelas, desfaz todo o cadastro, agora nesse método, se eu inserir os dados no formulário pai e abrir o segundo formulário que inseri dados na tabela filho, ele vai salvar direto na tab2, digamos que eu clique em Cancelar, só vai desfazer os dados do formulario pai, nao do filho, ou seja, vai ficar um registro morto dentro da Tab2, como posso resolver isso? Tem alguma forma que eu ao clicar em cancelar desfaz todo o processo?
    Não sei se consegui explicar bem. Neutral




    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  CassioFabre 17/4/2018, 12:21

    Bom dia,

    Entendi seu problema. Isso é bem óbvio pois, mesmo que esteja criando um formulário desvinculado, o seu subformulário (folha de dados) está na verdade vinculado à tabela, por isso ele salva as alterações. Eu indico duas soluções aqui:

    1 - Criar uma tabela temporária a cada vez que voce abrir o formulário e basear o seu subform nesta tabela temporária e a cada vez que fizer uma pesquisa de registro, busque o registro na tabela orifinal e ponha-o nesta temporária e faça as alterações necessárias. Caso não haja alterações e você cancele a adição (seu problema atual) basta excluir os registros dessa tabela e nada será afetado na tabela original. Caso queira salvar, basta passar os registros para a tabela original no fim das alterações. Para o caso de adições, funciona extamente da mesma form, porém não precisará resgatar os dados da tabela original, por óbvio.

    https://www.maximoaccess.com/t19224-resolvidocriar-tabela-temporaria-com-vba

    2 - Criar uma tabela fixa ao invés de temporária apenas para popular o subform. Funciona exatamente da mesma form que citei acima, porém não terá o trabalho de criar quando abrir e excluir quando fechar, o que dependendo do nível de utilização pode impactar bastante no processamento do sistema. Costumo utilizar essa solução. Salvar os registros e tudo mais é exatamente como citei acima.

    Abraço.


    .................................................................................
    Só não tem código pra morte!
    Assis
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4772
    Registrado : 06/11/2009

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  Assis 17/4/2018, 12:41

    Boa tarde

    Viu este exemplo, tem o formulário e o subformulários desvinculados

    copie o link abaixo e cole no navegador

    maximoaccess.com/t32640-resolvidosubformulario-desvinculado#224768



    .................................................................................
    *** Só sei que nada sei ***
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  CassioFabre 17/4/2018, 14:01

    Bom dia,

    Assis, neste exemplo nao é usado subformulário. Foi usada uma listbox com campos que adicionam ou editam registros nessa listbox. Também daria certo para o amigo, porém dependendo da quantidade de campos e o tipo de usuário, daria muito mais trabalho para codificar tudo, algo com o formulário folha de dados já faz de uma forma mais simples e mais fácil para validação.

    Abraço.


    .................................................................................
    Só não tem código pra morte!
    avatar
    wilflx2
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 31/01/2014

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  wilflx2 18/4/2018, 02:08

    Boa noite amigos!

    Perfeito CassioFabre, entendeu realmente meu problema! Vou tentar a sua solução, nunca trabalhei com criação de tabelas temporárias, vou testar, pelo que vi é um tanto trabalhoso, mas pode ser a solução para otimizar a inserção e a busca de dados.

    Com os formulários vinculados percebi uma grande lentidão com o passar do tempo e também a dificuldade em manipular os dados, que se tornam frágeis.

    Amigo Assis, gostei desse exemplo, vou aderir em outros BDs que tenho, mas como o CassioFabre disse, não me ajuda neste problema.

    Obrigado pela atenção e ajuda! Vou testar e dou-lhes uma posição!

    Abraços!
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  Noobezinho 18/4/2018, 12:05

    Willian

    Estou acompanhando o tópico, então você disse:

    "Com os formulários vinculados percebi uma grande lentidão com o passar do tempo e também a dificuldade em manipular os dados, que se tornam frágeis"


    Quantos registros tem teu aplicativo?

    E o que quer dizer com "se tornam frágeis"?

    [ ]'s


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    wilflx2
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 31/01/2014

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  wilflx2 19/4/2018, 16:22

    Boa tarde Noobezinho,

    Meu BD tem 116 mil registros, comecei ele ano passado, eu percebi que para salvar o registro tinha um certo atraso, dava umas travadas, os usuários reclamavam de lentidão e até um travamento, são 9 pessoas alimentando seguidamente e diariamente.
    Troquei por formulários desvinculados e esse atraso acabou.

    Quando digo frágeis falo do modo em que o access apresenta os registros, qualquer alteração já vai direto para a tabela, por ele carregar todos os dados da tabela, ele cria um vinculo que fica em aberto, quando á muitos lançamentos ao mesmo tempo junto com consultas ele resulta as vezes em corrompimento. Não sei se é um problema só meu, ou que eu possa ter feito algo de errado.
    Um exemplo: Ao carregar um registro, um usuário faz alguma alteração e ao invés de clicar em Salvar ele apenas fecha o formulário, acreditando que as alterações não surtiram efeito, mas acontece ao contrario, o Access já salva automaticamente.

    Com o método desvinculado, ele só recorre a tabela para buscar ou acrescentar o registro sem manter uma conexão aberta com ela. Usando Dao para cadastro e SQL para consulta, senti uma melhora na velocidade e estabilidade no sistema.

    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  Noobezinho 19/4/2018, 21:37

    Para evitar esse trabalhão todo e mantendo a vinculação, que tal fazer assim?

    Na seção declarações  do módulo do formulário, coloque:

    Dim strDirty as Boolean

    No evento Ao abri do formulário:

    strDirty = False

    No evento Em sujo do fomulário:

    strDirty = true

    No evento Ao fechar do formulário:

    If txtDirty = True Then
      If MsgBox("Foram feitas alterações nesse registro." & vbCrLf & "Deseja salvar essa alterações?", vbQuestion + vbYesNo) = vbNo Then
         DoCmd.RunCommand acCmdUndo
      End If
    End If

    Experimente.

    [ ]'s


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    wilflx2
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 31/01/2014

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  wilflx2 20/4/2018, 21:10

    Boa tarde!!

    Noobezinho, é interessante sua ideia, desconhecia esse método, vou aplicar aqui e ver como funciona.

    Eu ainda gostaria de manter os formulários desvinculados, pela rapidez de carregamento, mas se caso não encontrar um método que funcione perfeitamente, vou manter vinculado mesmo.

    Tentei adaptar o lance das tabelas temporárias mas não consegui, acredito que ficou trabalhoso demais.

    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4140
    Registrado : 29/06/2012

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  Noobezinho 20/4/2018, 21:27

    Quanto a demora no carregamento,

    faz a compactação do Back End?

    Isso agiliza e muito o carregamento.


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    wilflx2
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 31/01/2014

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  wilflx2 23/4/2018, 14:20

    Fiz sim, sempre que salvo faço a compactação, acredito que possa ser a rede também, não temos um roteador bom e são muitas conexões ao mesmo tempo.
    Só queria uma forma mais simples de trabalhar com os formularios desvinculados.
    avatar
    souza-joel
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 18/10/2016

    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  souza-joel 23/12/2019, 14:21

    Bom dia!
    Eu estava lendo as postagem sobre sua duvida e gostaria de saber como você resulveu esse problema wilflx2, pois estou com uma situação igual a descrita por voce.


    Conteúdo patrocinado


    Formulário com Subformulário desacoplados Empty Re: Formulário com Subformulário desacoplados

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 16/9/2024, 20:25