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]Parametrizar relatório com mais de uma consulta

    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty [Resolvido]Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool 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!
    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 267
    Registrado : 07/09/2012

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Tabelas com chaves Primárias repetidas

    Mensagem  Maicon 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.
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Re: [Resolvido]Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool 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
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Re: [Resolvido]Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool 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...
    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 267
    Registrado : 07/09/2012

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Amigo Verifique a estrutura das tuas tabelas.

    Mensagem  Maicon 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.
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Re: [Resolvido]Parametrizar relatório com mais de uma consulta

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

    Ok, fico no aguardo, muito obrigado pela colaboração
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Problema de dados duplicados ao gerar consulta

    Mensagem  leo.gool 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: https://drive.google.com/file/d/1zg7chv9FCrOjqLR8aXRQgeL6KcVTiUNN/view?usp=sharing
    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 267
    Registrado : 07/09/2012

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Exemplo de Relatorio

    Mensagem  Maicon 16/4/2018, 07: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
    [Resolvido]Parametrizar relatório com mais de uma consulta AttachmentBanco de Dados1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (76 Kb) Baixado 18 vez(es)


    Última edição por Maicon em 17/4/2018, 06:38, editado 1 vez(es)
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Re: [Resolvido]Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool 16/4/2018, 18: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...
    Maicon
    Maicon
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 267
    Registrado : 07/09/2012

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Tem com fazer praticamente tudo.

    Mensagem  Maicon 17/4/2018, 07: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
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Re: [Resolvido]Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool 17/4/2018, 17: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
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Re: [Resolvido]Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool 22/5/2018, 12: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
    avatar
    leo.gool
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Re: [Resolvido]Parametrizar relatório com mais de uma consulta

    Mensagem  leo.gool 18/7/2018, 14:09

    Resolvi meu problema, quando o banco está offline a operação VBA é instantânea, mas quando está na rede é lenta, acredito que isso é por conta do servidor ser uma máquina bem fraca, para facilitar meu relatório eu criei uma consulta SQL que funcionou mais que perfeitamente, implementei os conceitos de relação entre tabelas e ai consegui gerar a consulta, segue o código SQL para quem estiver interessado

    Código:
    SELECT
    1 AS mes,
    v.Id_Veiculo,
    Nz(a.quantidade, 0) AS quantidade,
    Nz(m.total_manutencao, 0) as total_manutencao,
    Nz(s.rodado, 0) AS rodado,
    Nz(a.gastoCombustivel, 0) AS gastoCombustivel
    FROM (([Tabela Veículos] AS v

    LEFT JOIN (SELECT aIDveiculo, SUM(Qtd) AS quantidade , SUM(valTotal) AS gastoCombustivel FROM Abastecimento WHERE MONTH(dataAbastecimento) = 1 AND YEAR(dataAbastecimento) = 2018  GROUP BY aIDveiculo)  AS a ON v.Id_Veiculo = a.aIDveiculo)
    LEFT JOIN (SELECT MIDveiculo, SUM(valorManu) AS total_manutencao FROM Manutenção WHERE MONTH(dataManu) = 1 AND YEAR(dataManu) = 2018  GROUP BY MIDveiculo)  AS m ON v.Id_Veiculo = m.MIDveiculo)
    LEFT JOIN (SELECT idVeiculo,"Situação Saída", SUM([Km Chegada]) - SUM([Km Saída]) AS rodado FROM Eventos WHERE MONTH([Data Saída]) = 1 AND YEAR([Data Saída]) = 2018 AND [Situação Saída] = "FINALIZADA"  GROUP BY idVeiculo)  AS s ON v.Id_Veiculo = s.idVeiculo
    WHERE v.Id_Veiculo = [Forms]![Gerar RGA]![nVeiculo]
    GROUP BY v.Id_Veiculo, a.quantidade, m.total_manutencao, s.rodado,a.gastoCombustivel;

    UNION SELECT
    2 AS mes,
    v.Id_Veiculo,
    Nz(a.quantidade, 0) AS quantidade,
    Nz(m.total_manutencao, 0) as total_manutencao,
    Nz(s.rodado, 0) AS rodado,
    Nz(a.gastoCombustivel, 0) AS gastoCombustivel
    FROM (([Tabela Veículos] AS v

    LEFT JOIN (SELECT aIDveiculo, SUM(Qtd) AS quantidade , SUM(valTotal) AS gastoCombustivel FROM Abastecimento WHERE MONTH(dataAbastecimento) = 2 AND YEAR(dataAbastecimento) = 2018 GROUP BY aIDveiculo)  AS a ON v.Id_Veiculo = a.aIDveiculo)
    LEFT JOIN (SELECT MIDveiculo, SUM(valorManu) AS total_manutencao FROM Manutenção WHERE MONTH(dataManu) = 2 AND YEAR(dataManu) = 2018  GROUP BY MIDveiculo)  AS m ON v.Id_Veiculo = m.MIDveiculo)
    LEFT JOIN (SELECT idVeiculo,"Situação Saída", SUM([Km Chegada]) - SUM([Km Saída]) AS rodado FROM Eventos WHERE MONTH([Data Saída]) = 2 AND YEAR([Data Saída]) = 2018 AND [Situação Saída] = "FINALIZADA"  GROUP BY idVeiculo)  AS s ON v.Id_Veiculo = s.idVeiculo
    WHERE v.Id_Veiculo = [Forms]![Gerar RGA]![nVeiculo]
    GROUP BY v.Id_Veiculo, a.quantidade, m.total_manutencao, s.rodado,a.gastoCombustivel;

    Conteúdo patrocinado


    [Resolvido]Parametrizar relatório com mais de uma consulta Empty Re: [Resolvido]Parametrizar relatório com mais de uma consulta

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 14:03