amilq Posted December 4, 2022 at 03:17 PM Report Share #628513 Posted December 4, 2022 at 03:17 PM (edited) 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 December 4, 2022 at 03:21 PM by amilq Acrescentar link de video de apresentação da bd. Link to comment Share on other sites More sharing options...
Luis_vxd Posted December 5, 2022 at 10:30 AM Report Share #628524 Posted December 5, 2022 at 10:30 AM 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 More sharing options...
amilq Posted December 5, 2022 at 10:59 AM Author Report Share #628525 Posted December 5, 2022 at 10:59 AM 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 More sharing options...
Luis_vxd Posted December 5, 2022 at 11:17 AM Report Share #628526 Posted December 5, 2022 at 11:17 AM Ok, já percebi. Uma pergunta: É necessário abrir o frmMov_SaldodoCliente ou pode ir direto para o relatório Rt_SaldDoCliente? Cumprimentos Luis https://programar-excel.pt Link to comment Share on other sites More sharing options...
amilq Posted December 5, 2022 at 12:03 PM Author Report Share #628528 Posted December 5, 2022 at 12:03 PM Eu criei esse formulário para selecionar o cliente. É um relatório que só se envia para os clientes com dívidas. Joaquim Link to comment Share on other sites More sharing options...
Luis_vxd Posted December 5, 2022 at 12:11 PM Report Share #628529 Posted December 5, 2022 at 12:11 PM 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 More sharing options...
amilq Posted December 5, 2022 at 12:14 PM Author Report Share #628531 Posted December 5, 2022 at 12:14 PM (edited) Se selecionar o cliente, na caixa de listagem do formulário de conta corrente, e chamar o relatório a partir daí, Excelente. Joaquim Edited December 5, 2022 at 12:15 PM by amilq Link to comment Share on other sites More sharing options...
Luis_vxd Posted December 5, 2022 at 12:40 PM Report Share #628533 Posted December 5, 2022 at 12:40 PM 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 More sharing options...
amilq Posted December 5, 2022 at 02:37 PM Author Report Share #628546 Posted December 5, 2022 at 02:37 PM 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 More sharing options...
Luis_vxd Posted December 5, 2022 at 03:37 PM Report Share #628547 Posted December 5, 2022 at 03:37 PM 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 More sharing options...
Luis_vxd Posted December 5, 2022 at 03:43 PM Report Share #628548 Posted December 5, 2022 at 03:43 PM (edited) 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 December 5, 2022 at 03:50 PM by Luis_vxd Cumprimentos Luis https://programar-excel.pt Link to comment Share on other sites More sharing options...
Solution amilq Posted December 5, 2022 at 03:57 PM Author Solution Report Share #628551 Posted December 5, 2022 at 03:57 PM 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now