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


2 participantes

    [Resolvido]Sincronizar 2 campos de uma tabela

    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 129
    Registrado : 24/03/2012

    [Resolvido]Sincronizar 2 campos de uma tabela Empty [Resolvido]Sincronizar 2 campos de uma tabela

    Mensagem  cantu 26/2/2024, 13:28

    Boa tarde,

    Tenho uma tabela que entre muitos outros campos tem um campo "Nome" de preenchimento obrigatório e um campo "Convivente" que só é preenchido com um nome quando exista um convivente dessa pessoa, quando não exista esse campo fica em branco. Quer isto dizer de cada nome pode ter um numero ilimitado de conviventes.
    Pretendo fazer um relatório onde apareça o "Nome" e o "Convivente" ou "Conviventes".
    Exemplo:
    Nome (Carlos) --> Convivente (não tem) - Não aparece no relatório
    Nome (Maria) --> Convivente (António) - Aparece no relatório a Maria como tendo como convivente o António
    Nome (Joana) --> Conviventes (João e Américo) - Aparece no relatório a Joana como tendo como conviventes o João e o Américo
    Nome (YYY) --> Conviventes (Z, X, M, C) - aparece no relatório o YYY tendo como conviventes o Z,X,M e C
    Tentei através da criação de uma consulta com 2 campos (Nome e Convivente) mas não resultou.
    Criei um relatório através do assistente de relatório, Tabela (nome e convivente), nível de agrupamento (convivente) e aparecem todos os nomes mesmo que não tenham conviventes-
    Desde já grato
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 73
    Registrado : 24/07/2023

    [Resolvido]Sincronizar 2 campos de uma tabela Empty Re: [Resolvido]Sincronizar 2 campos de uma tabela

    Mensagem  abreuluiston 5/3/2024, 16:15

    Olá amigo boa-tarde!

    Claramente a questão está na normalização dos dados. Você relata que tem uma tabela e não duas. Ou seja, você tem uma tabela com dados recursivos o que significa que uma linha dessa tabela depende de outra linha da mesma tabela. É como aninhar a dependência de uma coluna dentro dela mesma se você não tiver ao menos dois campos. Mas, se tiver dois campos, a linha principal terá uma das colunas vazias e a outra preenchida.

    Controlar tudo isso de forma recursiva é mais complicado o melhor seria você ter duas tabelas. A primeira com os dados "pai" e a segunda com os dados "filho". Ou seja: em uma tabela você teria o cadastro de todas as pessoas que são a origem da hierarquia e a segunda tabela os dados dos conviventes, porém, cada convivente seria relacionado na primeira tabela.

    Do ponto de vista da entrada de dados você teria duas telas de cadastro. A primeira seria os dados do originador e a segunda tela do convivente. Porém, para originar um registro na tabela de conviventes você teria que primeiro selecionar o originador para que a associação ocorra corretamente.

    O relatório depende da construção dos dados. Então, primeiro resolva a normalização dos dados em tabelas e somente assim você conseguirá o resultado esperado.

    Espero ter ajudado.

    At.
    Luis Abreu

    cantu gosta desta mensagem

    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 129
    Registrado : 24/03/2012

    [Resolvido]Sincronizar 2 campos de uma tabela Empty Re: [Resolvido]Sincronizar 2 campos de uma tabela

    Mensagem  cantu 20/5/2024, 14:22

    Boa tarde,

    Em primeiro lugar as minhas desculpas por não ter respondido mas tive um pequeno acidente já resolvido.

    Segundo percebi da sua informação terei que ter duas tabelas, uma que é a tabela de registo (principal) e uma segunda só com os conviventes. Mas como faço isso já que tenho só uma tabela (principal)? Como é que dados (nome) do(s) convivente(s) iriam aparecer automáticamente na segunda tabela?

    Cumprimentos,
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 73
    Registrado : 24/07/2023

    [Resolvido]Sincronizar 2 campos de uma tabela Empty Re: [Resolvido]Sincronizar 2 campos de uma tabela

    Mensagem  abreuluiston 23/5/2024, 14:59

    Bom dia!

    Como mencionei, sua questão é que os dados são recursivos (um registro da tabela depende de um registro pai). Para manter em uma tabela é necessário criar uma chave primária do tipo inteiro longo e mais uma coluna do tipo sim/não que identifica se o registro possuirá ou não dependências. Essa coluna servirá para fazer as consultas e separar os registros corretamente.

    Outro detalhe: você deverá ter uma linha origem de tudo porque se ela é recursiva alguém tem que originar os dados inclusive dos registros que não terão filhos. Não sei se entende, é um conceito complicado, mas bem interessante.

    Fiz um exemplo bem simples e anexei para você entender. O banco de dados possui apenas uma tabela, a pessoas.

    Minha primeira linha é justamente o registro pai de todos que coloquei com o código 0 (zero). Ele também servirá para fazer as consultas.

    Criei 3 consultas para você ver o funcionamento (da uma analisada em como montei as condições):

    1) Conviventes: É a sua consulta final, ela apresentará os dados do originador e seus conviventes (somente aparecerão registros que possuem originador e conviventes exatamente como no exemplo que você coloca na sua primeira mensagem).

    2) NaoPossuiConviventes: apresenta apenas os registros de originadores que não possuem conviventes.

    3) PossuiConviventes: serão listados apenas os registros de originadores que possuem conviventes, mas não os dados dos conviventes, pois esses dados estão na consulta "Conviventes".

    Veja que a consulta 1 utiliza a consulta 3 como origem dos dados. O que você precisa analisar bem são as condições que eu coloquei em cada uma das consultas para que o resultado seja apresentado corretamente.

    Enfim, você terá um trabalho de criar e popular os dados das duas colunas que eu mencionei (criar os códigos e atribuí-los aos registros pai)  na sua tabela e seguir a lógica das consultas. Se conseguir fazer isso você terá a origem dos dados para fazer o relatório.

    IMPORTANTE: não mencionei antes, mas para que funcione exatamente como eu montei você terá que criar o relacionamento da tabela com ela mesma. Se você nunca criou relacionamentos siga o seguinte caminho (inclusive para ver como eu montei o relacionamento do exemplo):

    Menu: Ferramentas de Banco de Dados\Relações

    At.
    Luis Abreu
    Anexos
    [Resolvido]Sincronizar 2 campos de uma tabela Attachmentconviventes.zip
    O anexo falhou no primeiro envio
    Você não tem permissão para fazer download dos arquivos anexados.
    (36 Kb) Baixado 5 vez(es)


    Última edição por abreuluiston em 23/5/2024, 15:07, editado 2 vez(es) (Motivo da edição : Anexar arquivo)

    cantu gosta desta mensagem

    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 129
    Registrado : 24/03/2012

    [Resolvido]Sincronizar 2 campos de uma tabela Empty Re: [Resolvido]Sincronizar 2 campos de uma tabela

    Mensagem  cantu 2/7/2024, 11:52

    Bom dia,

    Muito obrigado pelo interesse demostrado na minha dúvida.

    Tenho estado a analisar o exemplo que me envio e ele é bastante interessante e corresponde à minha realidade, no entanto fico com algumas (muitas!) dúvidas:

    1. No momento que faço o registo de um utente não sei (só saberei posteriormente ou muito posteriormente) se ele terá ou não conviventes
    2. Quando faço o registo de um convivente sei o nome de quem deu origem mas não sei o número dele (claro que posso ir à procura mas demora muito mais tempo)

    Exemplo:
    MARIA --> não sei naquele momento se tem conviventes (SIM/NÃO??)
    JORGE --> passados 2 meses faço o registo do "JORGE" e ele é convivente da "MARIA" (qual o código da MARIA?)

    Penso ter sido claro nas minhas dúvidas.

    Grato pela atenção, cumprimentos
    avatar
    abreuluiston
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 73
    Registrado : 24/07/2023

    [Resolvido]Sincronizar 2 campos de uma tabela Empty Re: [Resolvido]Sincronizar 2 campos de uma tabela

    Mensagem  abreuluiston 3/7/2024, 14:05

    Bom dia!

    Na verdade essa é uma situação comum para cadastros dependentes. Veja, é natural que nesses casos entre um registro PAI e com o tempo surge a necessidade de atribuir a esse registro principal suas dependências. Ou, no mínimo, os dois serem cadastrados no mesmo momento, porém sempre o PAI primeiro.

    Não tem outro jeito. Eu olhei apenas a sua necessidade pontual para que você entenda como pode ter o relatório que você deseja. Não sei se você já tem sistema e se tiver obvio que é preciso ajustes importantes e tudo deve ser analisado de acordo com o seu processo pq qualquer sistema deve refletir o processo de trabalho.

    A única forma realmente é pesquisar. Basta ter uma tela de pesquisa onde você colocaria o nome de uma pessoa e imediatamente a tela lhe apresentasse os dados do registro principal ao qual o atualmente sendo cadastrado seria vinculado. A chave de pesquisa pode ser por nome, número de documento ou até mesmo o código que originou o registro, caso você tenha entregue um cartão para a pessoa que foi registrada inicialmente.

    Inclusive a pesquisa poderia ser disparada a partir de uma tela de cadastro. Enfim, a pesquisa faz parte em todo e qualquer sistema e isso se resolve de forma simples, basta um select.
    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 129
    Registrado : 24/03/2012

    [Resolvido]Sincronizar 2 campos de uma tabela Empty Re: [Resolvido]Sincronizar 2 campos de uma tabela

    Mensagem  cantu 9/8/2024, 13:27

    Muito obrigado pela ajuda já consegui resolver com a dica

    Conteúdo patrocinado


    [Resolvido]Sincronizar 2 campos de uma tabela Empty Re: [Resolvido]Sincronizar 2 campos de uma tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/10/2024, 04:18