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

    Parametrizar relatório com mais de uma consulta

    Compartilhe

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 27/02/2018

    Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool em 13/3/2018, 14:11

    Olá, bom dia, boa tarde e boa noite, eu tenho um banco de dados para poder gerenciar o uso de veículos, saber dados sobre quilometragem, abastecimento e manutenção, no futuro irei atribuir permissões para cada tipo de usuário, pois o banco é para um setor de onde faço estágio e cada subsetor é responsável por cada coisa, um irá lançar dados referentes a quilometragem, outro do abastecimento e manutenção, e a minha dificuldade está sendo em demonstrar todos esses dados em um mesmo relatório, no banco o nome é RELATÓRIO GERAL, lá eu informo a quantidade de km percorridos no mês, a média de gasto de combustível e os gastos com combustível e manutenção, todos parametrizados através da placa. Para isso eu criei um formulário GERAR RELATÓRIO ANUAL, lá o usuário informa a placa e a consulta é gerada, colocar todos os dados não foi problema, segui alguns forums e consegui, mas o problema acredito que está em parametrizar essa consulta... quando o relatório é lançado não me retorna os dados de Km, vou enviar aqui o arquivo, testem gerar o relatório com o veículo de placa AAA-0000, agradeço desde já quem estiver disposto a me ajudar!
    avatar
    Maicon
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 111
    Registrado : 08/09/2012

    Tabelas com chaves Primárias repetidas

    Mensagem  Maicon em 19/3/2018, 08:25

    Você tem várias tabelas com chave primária nomeada como identificador duplicado cada tabela tem que ter uma chave primária única como por exemplo  : id_veiculos ; id_evento ; id_motorista. caso contrário quando juntares as tabelas em uma consulta vai dar erro sempre.
    Abraço.
    leia : "http://www.usandoaccess.com.br/tutoriais/classe-no-access-genesis.asp?id=1"
    Muito bom artigo e também pesquise sobre relacionamentos de tabelas.

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 27/02/2018

    Re: Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool em 19/3/2018, 14:59

    Olá Maicon, muito obrigado pela ajuda, eu fiz a troca dos nomes dos campos de chave primária para não darem conflitos, conforme me orientou, mas ainda assim não obtive resultado, acho que o problema está na passagem de parâmetro, pois eu fiz o teste de abrir o relatório eventos após selecionar o nome do veículo na caixa de combinação, e o relatório não foi filtrado conforme o parâmetro passado pela caixa de combinação

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 27/02/2018

    Re: Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool em 19/3/2018, 15:24

    Eu fiz o teste colocando diretamente no parâmetro a placa, assim a consulta é gerada, mas ela fica com os dados inconsistentes, valor de somas errados...
    avatar
    Maicon
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 111
    Registrado : 08/09/2012

    Amigo Verifique a estrutura das tuas tabelas.

    Mensagem  Maicon em 20/3/2018, 07:28

    Observando teu banco de dados pude observar que tu está repetindo campos em várias tabelas , o conceito de banco de dados é mais ou menos o seguinte tua podes criar tabelas de todas os intens que deseja listar por exemplo a tabela veículos :

    A tabela veículos contem os dados :

    Id_Veiculos
    Veículo
    Placa

    A Tabela Dados do veículo contem os dados:

    Id_Dados_Veiculos
    Veículo " Aqui é digitada a placa onde deveria recuperar a placa da tabela veiculos"
    ano
    renavam
    cnpj

    e por ai vai em várias tabelas repetiu o campo placa o que gera conflito com os outros campos , se tiver uma tabela com os dados do veículo não precisa lançar na outra tabela não faria sentido, o banco de dados faz justamente isso recupera os dados de forma que seja necessário um registro somente, no demais se trata de relacionamento.
    vou tentar trabalhar em exemplo em cima do que está tentando fazer para tentar te passar o conceito.

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 27/02/2018

    Re: Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool em 20/3/2018, 11:49

    Ok, fico no aguardo, muito obrigado pela colaboração

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 27/02/2018

    Problema de dados duplicados ao gerar consulta

    Mensagem  leo.gool em 24/3/2018, 14:05

    Olá, através de uma instrução SQL eu criei uma consulta, pelo que eu pesquisei eu devo ter uma chave primária e uma chave estrangeira, da qual serve como referência, no meu caso seria a placa e placaabastecimento, placamanutenção e veículo, construi a consulta mas como disse ele gera dados repetidos, se no relatório eu coloco como origem do dado as consultas do abastecimento, da manutenção ou do evento eu consigo um retorno individual com os dados corretos, mas quando uso a consulta que criei não dá certo, vou enviar novamente o banco de dados mas atualizado, fiz tudo que me pediu, troquei os nomes para não dar conflito mas o problema persiste, teste gerar essa consulta que eu criei e verá que os dados são gerados mas estão repetidos...

    Não consegui upar aqui o bd, estou enviando link para fazer download dele aqui

    Link do banco: [Você precisa estar registrado e conectado para ver este link.]
    avatar
    Maicon
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 111
    Registrado : 08/09/2012

    Exemplo de Relatorio

    Mensagem  Maicon em 16/4/2018, 08:55

    Desculpe a demora , meu pc deu bug e estou só com o pc antigo com office-2007 não consegui abrir teu banco para fazer um exemplo em cima dos teus dados mas também não consegui entender muito bem a lógica dos teus dados ou seja a forma como você queria organizar , mas percebi que queres puxar tudo em uma consulta o que não é necessariamente a maneira mais simples de fazer o que pretendes. Você pode criar um relatório principal com a base do que precisa e dentro do relatório você adiciona sub-relatórios com base nos campos em comum. veja este pequeno exemplo e de uma estudada.
    Anexos
    Banco de Dados1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (76 Kb) Baixado 8 vez(es)


    Última edição por Maicon em 17/4/2018, 07:38, editado 1 vez(es)

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 27/02/2018

    Re: Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool em 16/4/2018, 19:09

    Olá, obrigado pelo retorno, modelei meu banco de dados, fiz os relacionamentos corretamente e criei uma instrução sql para poder fazer a consulta em mais de uma tabela, mas mesmo com tudo certo a consulta me gera dados inconsistentes, assim pude verificar que o access não suporta realizar consulta em mais de uma tabela, ou seja, vários joins, infelizmente colocar sub-relatórios em um relatório maior não resolve meu problema, pois eu necessito que os dados sejam relacionados e fazer operações matemáticas entre os dados de tabelas diferentes, por exemplo, para saber quantos km o veículo anda por litro eu preciso do dado da quantidade e do dado da quilometragem, vou ter que trabalhar com o mySQL para poder fazer o sistema, da mesma forma agradeço a ajuda e apoio, a solução vai ser abandonar o acces...
    avatar
    Maicon
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 111
    Registrado : 08/09/2012

    Tem com fazer praticamente tudo.

    Mensagem  Maicon em 17/4/2018, 08:18

    Amigo meu conhecimento em mysql é bem básico, mas te digo que com certeza pode ser feito o que você quer no access, não querendo entrar no mérito dessa ou daquela ferramenta mas existem alguns pontos que deves avaliar :

    1) Relatórios e Formulários podem possuir campos não acoplados que possuam campos calculados, na prática você executa o cálculo no formulário ou relatório basta a consulta/tabela estar na origem de dados do teu formulário/relatório ou sub-formulário/sub-relatório , desde de que haja uma estrutura de relacionamento das tabelas que permitam que você relacione as tabelas e os campos. Além de poder usar o cabeçalhos e rodapés de agrupamento tanto em relatórios como em formulários para organizar os dados.
    2) Em casos mais complexos podemos nos valer das tabelas temporárias e ainda das consultas acréscimo e consulta atualização em conjunto com algumas macros ou códigos vba antes de abrir um relatório por exemplo podemos criar uma tabela temporária e depois atualizá-la com os dados e depois carregar o formulário/relatório com os dados desejados.
    3) Funções DLOOKUP ou DPESQUISA , uso pouco mas da mesma forma eficientes ou seja podes buscar valores em campo não acoplado de acordo com o que desejar.

    Enfim o Access é uma ferramenta completa, cujo o seu maior ponto forte é capacidade de gerar relatórios de diferentes tabelas e consultas de forma simples e eficaz,  Eu sempre consegui desenvolver todos os meus projetos com Access, mas sempre em cima muita pesquisa e prática e te afirmo não ferramenta mais simples, versátil e poderosa a prova disso está aqui mesmo no fórum você pode encontrar os mais complexos exemplos nosso amigo HARYSOHN por exemplo conseguiu até usar biometria em Access/VBA . Caso queira continuar o projeto ficarei feliz em ajuda-lo ou encerre o tópico como resolvido.
    Rolling Eyes

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 27/02/2018

    Re: Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool em 17/4/2018, 18:52

    Ainda vou dar uma investida no access, já tenho grande parte do meu projeto encaminhada, e se abandonar terei de retomar tudo novamente, eu acredito que por vba eu consiga fazer as operações matemáticas entre a tabela, mas ainda preciso amadurecer a minha programação em VBA

    leo.gool
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 31
    Registrado : 27/02/2018

    Re: Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool em 22/5/2018, 13:11

    Olá, venho aqui para dar retorno em relação ao meu problema, eu consegui fazer o relátório com operações básicas de vba alinhados a um formulário, funciona perfeitamente para o que eu preciso, o único problema é a longa demora na operação de soma dos registros, leva em torno de 1 minuto para eu ter todos os elementos no formulário, estou em busca de otimizar essa "consulta", caso alguém tenha alguma dica agradeço a contribuição, segue o código

    Código:
    Sub Combinação2_AfterUpdate()
    On Error Resume Next
        Dim kmTotal As Integer
        Dim cont As Integer
        Dim kmpMes(12) As Integer
        Dim qtdMes(12) As Integer
        Dim valMMes(12) As Currency
        Dim valAMes(12) As Currency
        Dim valComb As Currency
        Dim valTotM As Currency
        Dim qtdComb As Integer
    '  --------------------------------------------------------------------------------
    '  Calcular Km percorrido
        kmTotal = DSum("[Km Chegada] - [Km Saída]", "Eventos", "[Veículo/Placa] = '" & Combinação2.Column(1) & "' and [Situação Saída] = 'FINALIZADA'")
        cont = 1
        Do While cont <= 12
            kmpMes(cont) = DSum("[Km Chegada] - [Km Saída]", "Eventos", "[Veículo/Placa] = '" & Combinação2.Column(1) & "' and [Situação Saída] = 'FINALIZADA' and Month([Data Saída]) = '" & cont & "'")
            cont = cont + 1
        Loop
        txtKmJan = kmpMes(1)
        txtKmFev = kmpMes(2)
        txtKmMar = kmpMes(3)
        txtKmAbr = kmpMes(4)
        txtKmMai = kmpMes(5)
        txtKmJun = kmpMes(6)
        txtKmJul = kmpMes(7)
        txtKmAgo = kmpMes(8)
        txtKmSet = kmpMes(9)
        txtKmOut = kmpMes(10)
        txtKmNov = kmpMes(11)
        txtKmDez = kmpMes(12)
        txtKmperco = kmTotal
    '  --------------------------------------------------------------------------------
    '  Calculo combustivel
        qtdComb = DSum("[Qtd]", "Abastecimento", "[placaAbst] = '" & Combinação2.Column(0) & "'")
        valComb = DSum("[valTotal]", "Abastecimento", "[placaAbst] = '" & Combinação2.Column(0) & "'")
        cont = 1
        Do While cont <= 12
            qtdMes(cont) = DSum("[Qtd]", "Abastecimento", "[placaAbst] = '" & Combinação2.Column(0) & "' and Month([dataAbastecimento]) = '" & cont & "'")
            cont = cont + 1
        Loop
        txtQtdJan = qtdMes(1)
        txtQtdFev = qtdMes(2)
        txtQtdMar = qtdMes(3)
        txtQtdAbr = qtdMes(4)
        txtQtdMai = qtdMes(5)
        txtQtdJun = qtdMes(6)
        txtQtdJul = qtdMes(7)
        txtQtdAgo = qtdMes(8)
        txtQtdSet = qtdMes(9)
        txtQtdOut = qtdMes(10)
        txtQtdNov = qtdMes(11)
        txtQtdDez = qtdMes(12)
        txtComb = qtdComb
       
        cont = 1
        Do While cont <= 12
            valAMes(cont) = DSum("[valTotal]", "Abastecimento", "[placaAbst] = '" & Combinação2.Column(0) & "' and Month([dataAbastecimento]) = '" & cont & "'")
            cont = cont + 1
        Loop
        txtValAJan = valAMes(1)
        txtValAFev = valAMes(2)
        txtValAMar = valAMes(3)
        txtValAAbr = valAMes(4)
        txtValAMai = valAMes(5)
        txtValAJun = valAMes(6)
        txtValAJul = valAMes(7)
        txtValAAgo = valAMes(8)
        txtValASet = valAMes(9)
        txtValAOut = valAMes(10)
        txtValANov = valAMes(11)
        txtValADez = valAMes(12)
        txtValComb = valComb
    '  --------------------------------------------------------------------------------
    '  Calculo Manutenção
        valTotM = DSum("[valorManu]", "Manutenção", "[placaManu] = '" & Combinação2.Column(0) & "'")
        cont = 1
        Do While cont <= 12
            valMMes(cont) = DSum("[valorManu]", "Manutenção", "[placaManu] = '" & Combinação2.Column(0) & "' and Month([dataManu]) = '" & cont & "'")
            cont = cont + 1
        Loop
        txtValManuJan = valMMes(1)
        txtValManuFev = valMMes(2)
        txtValManuMar = valMMes(3)
        txtValManuAbr = valMMes(4)
        txtValManuMai = valMMes(5)
        txtValManuJun = valMMes(6)
        txtValManuJul = valMMes(7)
        txtValManuAgo = valMMes(8)
        txtValManuSet = valMMes(9)
        txtValManuOut = valMMes(10)
        txtValManuNov = valMMes(11)
        txtValManuDez = valMMes(12)
        txtValManu = valTotM

    End Sub

      Data/hora atual: 22/6/2018, 23:20