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

    [Resolvido]Campo Calculado - Contar quantas vezes um determinado Código se repete

    Compartilhe

    Albergiomelo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 15/09/2015

    [Resolvido]Campo Calculado - Contar quantas vezes um determinado Código se repete

    Mensagem  Albergiomelo em 26/10/2017, 12:52

    Bom dia a todos!!
    Não tenho muita experiência com Access, mas estou montando um sistema de controle de Relatório de Auditoria, o mesmo possui 03 Tabelas como demonstrado abaixo:
    Tbl_Relatorios
    CodRelat (Numeração Automática-Chave primária)-Campo de Relacionamento
    Título do Relatório
    Diretoria
    Área Envolvida
    Emissão

    Tbl_Pontos
    CodRelat-Campo de Relacionamento
    CodAspecto (Numeração Automática-Chave primária)
    Descrição dos Pontos/Aspectos

    Tbl_Recomendacao

    CodRelat
    CodAspecto-Campo de Relacionamento
    CodRecom(Numeração Automática-Chave primária)
    Recomendações
    Descrição do Plano de Ação
    Responsável/Área
    Início
    Conclusão
    Status de Validação

    Montei um formulário para visualizar todos os relatórios emitidos, utilizando apenas a tabela Tbl_Relatorios em uma Caixa de Listagem, contudo, preciso do total de Pontos e Recomendações das outras duas tabelas (campo esse que não existe, portanto, seria um Campo Calculado). Como a relação entre elas é de Um para Muito (sendo a Tabela mãe a Tbl_Relatorios), imaginei em contar o Campo CodRelat da Tabela Tbl_Pontos que pode se repetir N vezes (inserindo na própria tabela um campo calculado), da mesma forma contar o Campo CodAspecto da Tabela Tbl_Recomendacao que também pode se repetir N Vezes. Inicialmente inseri diretamente na tabela Tbl_Pontos um campo calculado montando a seguinte expressão em SQL: Select [CodAspecto], count [CodRelat] AS Qtde from Tbl_Pontos Group by CodAspecto. portanto, selecionei, em um campo vazio, Campo Calculado, escolhendo Número e, no construtor de expressões inseri a SQL acima.  

    Entretanto apresenta o seguinte erro:
    "A sintaxe da subconsulta nesta expressão está incorreta.
    verifique essa sintaxe e coloque a subconsulta entre parênteses."


    Quando insiro os parênteses aparece a seguinte mensagem:
    "Não é possível criar um campo calculado.
    Verifique a expressão '(Select [CodAspecto], count [CodRelat] AS Qtde from Tbl_Pontos Group by CodAspecto)'"


    A ideia seria incluir na caixa de listagem (além dos campos da tabela Tbl_Relatorios) apenas esses campos calculados das tabela Tbl_Pontos e Tbl_Recomendacao.

    Então vão as perguntas:
    Estou colocando a expressão SQL no local errado??
    Minha expressão tem erro de Sintaxe???
    Há outra forma de fazer isso diretamente na caixa de Listagem??

    Desde já agradeço qualquer luz que puderam me dar.
    Um abraço

    Albergiomelo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 15/09/2015

    Re: [Resolvido]Campo Calculado - Contar quantas vezes um determinado Código se repete

    Mensagem  Albergiomelo em 27/10/2017, 19:33

    Olá pessoal!!!
    Apesar de não ter havido nenhuma resposta, consegui resolver o problema como segue:

    Criei duas Consultas para obter o Total de Pontos por Relatório e o Total de Recomendações por Pontos em cada Relatório. Tive que agrupar as consultas de duas em duas Tabelas (Tbl_Relatorios x Tbl_Pontos & Tbl_Relatorios x Tbl_Recomendacoes), infelizmente não tive conhecimento suficiente pra fazer um Select só com as 3 tabelas juntas. Segue a Query que usei:

    Consulta1:
    SELECT Tbl_Relatorios.CodRelat, Tbl_Relatorios.[Título do Relatório], Tbl_Relatorios.Diretoria, Tbl_Relatorios.[Área Envolvida], Tbl_Relatorios.Emissão, Count(Tbl_Pontos.CodAspecto) AS QtdePontos
    FROM Tbl_Relatorios INNER JOIN Tbl_Pontos ON Tbl_Relatorios.CodRelat = Tbl_Pontos.CodRelat
    GROUP BY Tbl_Relatorios.CodRelat, Tbl_Relatorios.[Título do Relatório], Tbl_Relatorios.Diretoria, Tbl_Relatorios.[Área Envolvida], Tbl_Relatorios.Emissão
    ORDER BY Tbl_Relatorios.CodRelat;

    Consulta2:
    SELECT Tbl_Relatorios.CodRelat, Tbl_Relatorios.[Título do Relatório], Tbl_Relatorios.Diretoria, Tbl_Relatorios.[Área Envolvida], Tbl_Relatorios.Emissão, Count(Tbl_Recomendacoes.CodRecom) AS QtdeRecom
    FROM Tbl_Relatorios INNER JOIN Tbl_Recomendacoes ON Tbl_Relatorios.CodRelat = Tbl_Recomendacoes.CodRelat
    GROUP BY Tbl_Relatorios.CodRelat, Tbl_Relatorios.[Título do Relatório], Tbl_Relatorios.Diretoria, Tbl_Relatorios.[Área Envolvida], Tbl_Relatorios.Emissão
    ORDER BY Tbl_Relatorios.CodRelat;

    Após confirmar a consistência dos dados obtidos, abri meu formulário de Relatórios Emitidos e na Propriedade da Caixa de Listagem em Origem da Linha - Construtor de Consultas busquei os dados da Consultas1 e Consulta2, sendo que da Consulta1 inseri todos os campos, inclusive QtdePontos e da Consulta2 apenas o campo QtdeRecom. Pronto!!! Para cada relatório obtive dois Campos Calculados para Qtde de Pontos e Qtde de Recomendações.

    Observação: Na primeira vez que executei, como havia esquecido de fazer a Junção dos campos CodRelat entre as 2 Consultas houve duplicação de dados, após ter feito a Junção dos campos os valores apresentados foram exclusivos e únicos.

    Apesar de ter resolvido sozinho meu problema, espero que minha solução auxiliei alguém que esteja com o mesmo problema e, caso alguém tenha uma solução mais prática ou saiba juntar as duas Querys, ficaria feliz em saber como é!!!
    Abraços





      Data/hora atual: 22/10/2018, 22:11