MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Obter os dados sobre o relacionamento existente entre tabelas de um formulário.

    Compartilhe
    avatar
    Paulo Robilotta
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 44
    Registrado : 24/09/2010

    Obter os dados sobre o relacionamento existente entre tabelas de um formulário.

    Mensagem  Paulo Robilotta em Sex 01 Set 2017, 04:08

    Objetivo :  Obter os dados sobre o relacionamento existente entre tabelas de um formulário.

    Os dados sobre o Relacionamento entre as  tabelas do formulário na coleção Relations eu já tenho.

    Abaixo a cópia da janela imediata resultado da função que eu criei:

    ====================================
    >>> Relacionamento para : tabFiltros
       >> Nome da relação   : tabFiltrostabDados
       >> Tabela            : tabFiltros
          > Chave Primária : ExemploAutoNum
             JOIN             : Left
    > ATRIBUTOS
      Relação : 1:1
      Integridade Referencial : SIM
      Propaga atualização : SIM
      Propaga exclusão : SIM
    ====================================
    >>> Relacionamento para : tabDados
       >> Nome da relação   : tabFiltrostabDados
       >> Tabela            : tabDados
          > Estrangeira    : Idfiltros
             JOIN             : Left
    > ATRIBUTOS
      Relação : 1:1
      Integridade Referencial : SIM
      Propaga atualização : SIM
      Propaga exclusão : SIM
    =====================================

    No entanto, com  esses dados não consegui deduzir quem é tabela Esquerda e qual a Direita da relação.

    Na janela Relacionamentos aparece a seguinte relação: tabFiltros.ExemploAutoNum | 1 > 1 | tabDados.Idfiltro

    Para tentar entender essa questão, apliquei a função com diferentes relações da coleção Relations entre diferentes tabelas e observando

    os resultados verifiquei que:

    1) A tabela Esquerda da relação é sempre a que tem a chave primária.
    2) Que o nome dado automaticamente para a relação (tabFiltrostabDados) é a concatenação dos nomes da tabela Esquerda com a

    tabela Direita.

    Uma primeira pergunta : Essas observações estão corretas ? Em especial a do ítem 1. A do ítem 2 eu sei que não necessariamente pois a

    relação pode ter sido criada pelo usuário e o nome dado para a relação é arbitrário.

    Se não estiverem, há como obter a informação Esquerda X Direita ?

    Uma segunda pergunta, agora relacionada diretamente ao meu objetivo : Existe uma forma de se obter esses mesmos dados para a

    relação entre as tabelas que são Origem do Registro de um Formulário (que não necessariamente são as definidas na coleção

    Relations).

    Uma primeira possibilidade que imaginei seria decompor as cláusulas da SQL que é a origem do registro e através da análise da

    cláusula FROM deduzir as características da relação. Essa solução meio "força bruta" não me agrada dada a infinidade de sintaxes

    possíveis da SQL e dos erros imprevistos que isso pode gerar.

    Se fosse para uso próprio eu contornaria essas questões por minha conta. No caso, pretendo usar essas informações para aprimorar e

    aumentar as funcionalidades de um exemplo de uso geral sobre filtros sequenciais a se distribuído no meu blog.

    [Você precisa estar registrado e conectado para ver este link.]

    Agradeço antecipadamente

    Paulo
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6496
    Registrado : 05/11/2009

    Re: Obter os dados sobre o relacionamento existente entre tabelas de um formulário.

    Mensagem  Alexandre Neves em Sex 01 Set 2017, 13:21

    Boa tarde,
    no relacionamento LEFT, a tadela da direita será a tabela indicada antes do LEFT e a da Esquerda a indicada após
    no relacionamento RIGHT é ao contrário


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Paulo Robilotta
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 44
    Registrado : 24/09/2010

    Re: Obter os dados sobre o relacionamento existente entre tabelas de um formulário.

    Mensagem  Paulo Robilotta em Sex 01 Set 2017, 18:50

    Alexandre

    Obrigado pela resposta mas o que necessito é um critério para determinar (via VBA) se a tabela é Esquerda ou Direita.
    Ou seja, para que lado a seta aponta (se for o caso) no relacionamento entre as tabelas.


    Abraço

    Paulo
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6496
    Registrado : 05/11/2009

    Re: Obter os dados sobre o relacionamento existente entre tabelas de um formulário.

    Mensagem  Alexandre Neves em Sex 01 Set 2017, 23:16

    isso nunca fiz


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: Sab 18 Nov 2017, 01:07