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

    [Resolvido]Ajuda! Relatório com execução lenta

    avatar
    pauloc.amaral
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 01/09/2015

    [Resolvido]Ajuda! Relatório com execução lenta Empty [Resolvido]Ajuda! Relatório com execução lenta

    Mensagem  pauloc.amaral 9/2/2017, 15:13

    Boa tarde pessoal,

    Tenho 2 tabelas com os campos abaixo:

    tblLancamentosContaCorrente

    - idLancamento
    - idContaCorrente
    - idCliente
    - Saldo

    tblContaCorrente

    - idContaCorrente
    - idCliente
    - Cliente
    - Nome

    Os campos idContaCorrente e idCliente são comuns em ambas as tabelas.

    Estou gerando um relatório que me apresenta o campo Nome da tabela tblContaCorrente e o campo Saldo da tabela tblLancamentosContaCorrente através da consulta abaixo:

    Código:

    SELECT tblContaCorrente.Nome, tblLançamentosContaCorrente.Saldo, tblLançamentosContaCorrente.idLançamento, tblLançamentosContaCorrente.idContaCorrente
    FROM tblContaCorrente INNER JOIN tblLançamentosContaCorrente ON tblContaCorrente.[idContaCorrente] = tblLançamentosContaCorrente.[idContaCorrente]
    WHERE (((tblLançamentosContaCorrente.idLançamento)=DLast("idLançamento","tblLançamentosContaCorrente","idContaCorrente = " & [tblLançamentosContaCorrente]![idContaCorrente])))
    ORDER BY tblContaCorrente.Nome;

    Ocorre que a execução da consulta está muito lenta. Existe alguma outra forma de gerar esse relatório apresentando os mesmos dados?

    Grato

    Paulo
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    [Resolvido]Ajuda! Relatório com execução lenta Empty Re: [Resolvido]Ajuda! Relatório com execução lenta

    Mensagem  Cláudio Más 9/2/2017, 17:34

    Boa tarde,

    Certamente a função DLast está causando lentidão, mas pode melhorar retirando a cláusula ORDER BY da instrução Select e adicionando a classificação na estrutura do relatório (Agrupar e Classificar).

    Se isso não for suficiente, deverá mesmo substituir a função DLast por algum outro método para obter o saldo.
    avatar
    pauloc.amaral
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 01/09/2015

    [Resolvido]Ajuda! Relatório com execução lenta Empty Re: [Resolvido]Ajuda! Relatório com execução lenta

    Mensagem  pauloc.amaral 10/2/2017, 11:05

    Bom dia Claudio,

    Obrigado por responder. Removi a clausula ORDER BY, porém não houve alteração significativa na execução da consulta. Realmente é o comando Dlast que tem ocasionado a lentidão.

    Alguma outra sugestão? Pensei em montar o relatório via vba utilizando recordset, para agilizar a consulta ao BD, porém não tenho noção de como fazê-lo, seria uma possibilidade?

    Grato

    Paulo
    Cláudio Más
    Cláudio Más
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1278
    Registrado : 21/01/2012

    [Resolvido]Ajuda! Relatório com execução lenta Empty Re: [Resolvido]Ajuda! Relatório com execução lenta

    Mensagem  Cláudio Más 10/2/2017, 11:41

    Bom dia Paulo,

    Tente isso:

    Código:
    SELECT tblContaCorrente.Nome, a.Saldo FROM tblContaCorrente INNER JOIN (SELECT idContaCorrente, Last(tblLançamentosContaCorrente.Saldo) AS Saldo
    FROM tblLançamentosContaCorrente GROUP BY idContaCorrente)  AS a ON tblContaCorrente.[idContaCorrente] = a.[idContaCorrente] ORDER BY tblContaCorrente.Nome
    avatar
    pauloc.amaral
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5
    Registrado : 01/09/2015

    [Resolvido]Ajuda! Relatório com execução lenta Empty Re: [Resolvido]Ajuda! Relatório com execução lenta

    Mensagem  pauloc.amaral 10/2/2017, 14:51

    Perfeito Claudio, caiu como uma luva, muito obrigado!

    Tópico encerrado.

    Abs

    Paulo

      Data/hora atual: 17/4/2021, 16:27