Jump to content

Criação de Relatório com duas tabelas não relacionadas.


amilq
Go to solution Solved by amilq,

Recommended Posts

Boa tarde amigos:

Antes demais, os meus parabéns pelo serviço que aqui prestam.

Eu queria criar um relatório com dados de 4 tabelas:

1) Clientes

Campo: NomeCliente

2) Vendas: Cabeçalho

Campo: IDVenda

Campo: DataVenda

2) Vendas: Detalhes

Campo: TotalLinha

3) Pagamentos de Cliente

Campo: IDPagamento

Campo: DataPagamento

Campo: ValorPago

 

O objetivo era obter uma coluna com o total das vendas e outra coluna com o total dos pagamentos. Eu criava o campo com a diferença para apresentar o saldo do cliente.

 

O problema que encontro é que não consigo relacionar a tabela de VendaDetalhes com a tabela PagamentosDoCliente.

Através do formulário (Conta Corrente dos Clientes) que criei, consigo apresentar o total das vendas com um subformulário e o total dos pagamentos com outro subformulário.

Depois criei um campo com a diferença que dá o saldo do cliente.

No formulário das vendas, posso enviar um relatório de todas as vendas do cliente, escolhendo a data inicial e a data final.

No formulário dos pagamentos, posso enviar um relatório de todos os pagamentos do cliente, escolhendo a data inicial e a data final.

O que me falta, é enviar um relatório com o saldo do cliente, a partir o formulário de conta corrente de clientes.

Eu criei o relatório, que está disponível no formulário de conta corrente de clientes.

Criei um botão para enviar o relatório com o saldo. Escolhe-se o cliente e clica-se para abrir o relatório. O relatório contem os dados das vendas, dos pagamentos e tem um campo com a diferença, que dá o saldo do cliente.

O problema é que os movimentos se repetem dando um valor superior e o saldo não está correto.

As tabelas de vendas e vendasdetalhe, não teem uma relação com a tabela pagamentos de cliente. Penso que o problema estará aí.

Podem ajudar-me a configurar este relatório?

É o que me falta para eu começar a distribuir o meu sistema.

Envio em anexo, o sistema com as tabelas, formulários, consultas e o relatório em questão.

Link: https://drive.google.com/file/d/1S_ZD4nL2EDANikoWL7G9hcgrcbraUdUm/view?usp=share_link

Link da apresentação do software no youtube.

Agradeço a vossa ajuda.

Obrigado

Joaquim

 

Edited by amilq
Acrescentar link de video de apresentação da bd.
Link to comment
Share on other sites

Olá Joaquim

Excelente trabalho. 😃

Fiz o download do sua base de dados, mas estou a ter alguma dificuldade em entender o seu problema.

On 12/4/2022 at 3:17 PM, amilq said:

As tabelas de vendas e vendasdetalhe, não teem uma relação com a tabela pagamentos de cliente. Penso que o problema estará aí.

as tabelas de vendas e os pagamentos devem ter um link comum que é o cliente e não se devem relacionar diretamente enter elas. O que talvez precise é criar um query (consulta) para ligar os elementos todos.

On 12/4/2022 at 3:17 PM, amilq said:

Criei um botão para enviar o relatório com o saldo. Escolhe-se o cliente e clica-se para abrir o relatório. O relatório contem os dados das vendas, dos pagamentos e tem um campo com a diferença, que dá o saldo do cliente.

Não encontrei o botão. 🙂

Cumprimentos

Luis
https://programar-excel.pt

Link to comment
Share on other sites

Olá Luís, bom dia;

O botão encontra-se no formulário de conta corrente dos clientes, na parte superior do formulário: frmMov_CCClientes

A legenda do botão é: Enviar um relatório ao Cliente, com o saldo da Conta Corrente

Ao clicar nesse botão abre o formulário: frmMov_SaldodoCliente

Seleciona-se o cliente e ao clicar em visualizar, abre-se o relatório com o saldo do cliente.

O relatório tem base na consulta: Cons_SaldoDoCliente

O relatório fica sempre com os valores repetidos como pode ver na imagem. Ver a imagem.

Agradeço-lhe muito se me puder ajudar, porque falta resolver isso para eu distribuir o sistema.

Um grande abraço.

Obrigado

Joaquim

 

Link to comment
Share on other sites

A informação do cliente e do saldo já está presente em frmMov_SaldodoCliente. Parece-me redundante ir a frmMov_SaldodoCliente para selecionar o que já está selecionado em rmMov_SaldodoCliente. 🙂

A não ser que pretenda enviar relatórios a todos os clientes que tenham dívidas então talvez aceder a rmMov_SaldodoCliente diretamente do MENU. É uma sugestão.🙂

Cumprimentos

Luis
https://programar-excel.pt

Link to comment
Share on other sites

Para abrir o relatório Rt_SaldDoCliente diretamente de frmMov_SaldodoCliente:

Private Sub btEnviarSaldo_Click()
    DoCmd.OpenReport "Rt_SaldoDoCliente", acViewPreview, , "[NomeCliente] = '" & Me.NomeCliente & "'"
End Sub

Eu uso o Office na versão inglesa. É o código para o btEnviarSaldo_Click().

Se quiser continuar a usar o numero do documento de venda (IDVD) e de pagamento (IDPCL) então os pagamentos têm de ser relacionados com a venda para poderem ser agregados no relatório. Por relacionar aqui significa que a tabela dos pagamentos tem de ter um campo com o numero da venda.

Cumprimentos

Luis
https://programar-excel.pt

Link to comment
Share on other sites

Olá de novo Luís.

O relatório agora, está configurado corretamente, mas está na situação de chamar o segundo formulário para selecionar o cliente.

O formulário de conta corrente de clientes tem agora dois botões:

1) Enviar o relatório - Luís

2) Enviar o relatório - Joaquim

Ao clicar no segundo, chama o outro formulário para selecionar o cliente. E, embora funcione bem, não tem sentido como o Luís disse, ter outro formulário, quando pode ser selecionado pela caixa de listagem que já existe.

Ao clicar no primeiro que é o seu código, o código não funciona, porque agora tem de ser corrigido.

Se não for maçada, por favor corrija o código do primeiro botão.

Transfira aqui a Bd_Alterada

Um grande abraço e muito obrigado pela Sua Grande Ajuda.

Com amizade, Joaquim.

Obrigado

 

Link to comment
Share on other sites

Esta BD é diferente da que disponibilizou antes.

As suas consultas já estão pré filtradas por um campo de um formulário.
Eu não faço assim. Para mim as consultas são sempre o mais genéricas possíveis e depois só quando eu abro o formulário é que filtro a consulta para me mostrar o que quero. Deste modo uma mesma consulta pode ser usada por mais do que um formulário (re-utilização de recursos). Se analizar o código que lhe mandei vai ver que o filtro está incorporado no comando OpenReport. esta parte é o filtro: "[NomeCliente] = '" & Me.NomeCliente & "'". Por isso o erro ao abrir.

Por outro lado a consulta 'Cons_SaldoDoCliente' é constituída por outras duas, o que não é nenhum problema. A questão é que as duas sub-consultas também estão já pré-filtradas e isso não é uma boa prática e pode dar erros aleatórios porque depende do formulário estar carregado na memória ou não. se o formulário em causa não estiver disponível por qualquer razão (a máquina está ocupada a fazer outra coisa) o resultado será sempre um erro.

Sugiro por isso que remova os critérios das três consultas e verá que o meu código funciona bem. 🙂

Cumprimentos

Luis
https://programar-excel.pt

Link to comment
Share on other sites

Ou então retire o filtro do comando openReport. 😄

Acho que é importante dizer-lhe isto uma vez que vai distribuir a sua base de dados e não sabe como estará configurado o computador em que a BD vai correr.
O critério '[Formulários]![frmMov_SaldodoCliente]![TxtListaSaldodoCliente]' que usa nas consultas não é reconhecido pelo meu Access. A razão é que o meu Office está em Inglês e a palavra 'Formulários' não existe. Isto significa que um computador cuja configuração regional não seja igua à do seu, irá provávelmente dar problemas. Eu já passei maus bocados por coisas semelhantes.. 😄

Edited by Luis_vxd

Cumprimentos

Luis
https://programar-excel.pt

Link to comment
Share on other sites

  • Solution

Compreendo, mas essa configuração não foi feita por mim.

Eu tinha o pedido também no fórum Máximo Access e foi daí que veio a configuração. Como eu vi que funcionava, mandei-lha para alterar o código do botão.

Vou tentar fazer como disse, mas não sei se conseguirei.

Se não conseguir, tenho que deixar como está.

Um grande abraço e Festas Felizes.

Com amizade

Joaquim Lima

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.