Não sei se esta é a sala correta para postar este duvida:
Tenho duas consultas abaixo relacionadas:
esta é a primeira:
==========================================================================================================
SELECT Lancamentos.CodConta, Lancamentos.Centrocst, Month([Dtlcto]) AS Mês, Year([Dtlcto]) AS Ano, Sum(Lancamentos.ValorMObjet) AS ExecutadoMensal, 0 AS OrcadoMensal, Format(DSum("[saldo]","qry_ExecutadoMensal","[Mês] <= " & [Mês] & "And [Ano] = " & [Ano] & "And [Centrocst] = " & [Centrocst] & "And [CodConta] = " & [CodConta]),"Currency") AS ExecutadoAcum, 0 AS OrcadoAcum
FROM Lancamentos
GROUP BY Lancamentos.CodConta, Lancamentos.Centrocst, Month([Dtlcto]), Year([Dtlcto])
HAVING (((Year([Dtlcto]))=Year(Date())));
Esta é a segunda:
============================================================================================================
SELECT PlanejamentoAnual.CodConta, PlanejamentoAnual.Centrocst, PlanejamentoAnual.MesRef AS Mês, PlanejamentoAnual.AnoRef AS Ano, 0 AS ExecutadoMensal, Sum(PlanejamentoAnual.CustosPlan) AS OrcadoMensal, 0 AS ExecutadoAcum, Format(DSum("[Saldo]","qry_OrcadoMensal","[MesRef] <= " & [MesRef] & "And [AnoRef] = " & [AnoRef] & "And [Centrocst] = " & [Centrocst] & "And [CodConta] = " & [CodConta]),"Currency") AS OrcadoAcum
FROM PlanejamentoAnual
GROUP BY PlanejamentoAnual.CodConta, PlanejamentoAnual.Centrocst, PlanejamentoAnual.MesRef, PlanejamentoAnual.AnoRef
HAVING (((PlanejamentoAnual.AnoRef)=Year(Date())));
=============================================================================================================
Esta terceira é uma consulta union das duas primeira:
==============================================================================================================
SELECT Lancamentos.CodConta, Lancamentos.Centrocst, Month([Dtlcto]) AS Mês, Year([Dtlcto]) AS Ano, Sum(Lancamentos.ValorMObjet) AS ExecutadoMensal, 0 AS OrcadoMensal, Format(DSum("[saldo]","qry_ExecutadoMensal","[Mês] <= " & [Mês] & "And [Ano] = " & [Ano] & "And [Centrocst] = " & [Centrocst] & "And [CodConta] = " & [CodConta]),"Currency") AS ExecutadoAcum, 0 AS OrcadoAcum
FROM Lancamentos
GROUP BY Lancamentos.CodConta, Lancamentos.Centrocst, Month([Dtlcto]), Year([Dtlcto])
HAVING (((Year([Dtlcto]))=Year(Date()))) UNION SELECT PlanejamentoAnual.CodConta, PlanejamentoAnual.Centrocst, PlanejamentoAnual.MesRef AS Mês, PlanejamentoAnual.AnoRef AS Ano, 0 AS ExecutadoMensal, Sum(PlanejamentoAnual.CustosPlan) AS OrcadoMensal, 0 AS ExecutadoAcum, Format(DSum("[Saldo]","qry_OrcadoMensal","[MesRef] <= " & [MesRef] & "And [AnoRef] = " & [AnoRef] & "And [Centrocst] = " & [Centrocst] & "And [CodConta] = " & [CodConta]),"Currency") AS OrcadoAcum
FROM PlanejamentoAnual
GROUP BY PlanejamentoAnual.CodConta, PlanejamentoAnual.Centrocst, PlanejamentoAnual.MesRef, PlanejamentoAnual.AnoRef
HAVING (((PlanejamentoAnual.AnoRef)=Year(Date())));
==============================================================================================================
e esta é o agrupamento da terceira, que é a base de um relatorio gerencial:
==============================================================================================================
SELECT qry_ExecutadoOrcadoAcumMes.CodConta, qry_ExecutadoOrcadoAcumMes.Centrocst, qry_ExecutadoOrcadoAcumMes.Mês, qry_ExecutadoOrcadoAcumMes.Ano, Sum(qry_ExecutadoOrcadoAcumMes.Executado) AS ExecutadoMensal, Sum(qry_ExecutadoOrcadoAcumMes.OrcadoMensal) AS OrcadoMensal, Sum(Format([ExecutadoAcum],"Currency")) AS ExecutadoAcumulado, Sum(qry_ExecutadoOrcadoAcumMes.OrcadoAcum) AS OrcadoAcumulado, Contas.Conta, [ExecutadoMensal]-[OrcadoMensal] AS Desvio, IIf([OrcadoMensal]=0,0,[Desvio]/[OrcadoMensal]) AS Desvio2, Classes.CodClasse, Grupos.CodGrupo, Contas.CodCusto
FROM (((qry_ExecutadoOrcadoAcumMes INNER JOIN Contas ON qry_ExecutadoOrcadoAcumMes.CodConta = Contas.CodConta) INNER JOIN Classes ON Contas.CodClasse = Classes.CodClasse) INNER JOIN Grupos ON Classes.CodGrupo = Grupos.CodGrupo) INNER JOIN CentroDeCusto ON qry_ExecutadoOrcadoAcumMes.Centrocst = CentroDeCusto.Centrocst
GROUP BY qry_ExecutadoOrcadoAcumMes.CodConta, qry_ExecutadoOrcadoAcumMes.Centrocst, qry_ExecutadoOrcadoAcumMes.Mês, qry_ExecutadoOrcadoAcumMes.Ano, Contas.Conta, Classes.CodClasse, Grupos.CodGrupo, Contas.CodCusto;
==============================================================================================================
Pelo painel de navegação está pesando o banco de dados. Como faço para executar estas pelo menos as duas primeiras consultas criando tabelas temporarias e apartir dai criar as consultas 3 e 4 ? já vi que fica mais rápido fazer pelo vba, mas não tenho os comandos necessários para fazê-los.
Alguem tem alguma ideia? qualquer coisa serve, seja criando tabelas temporárias, seja função ou outra coisa que seja mais rápido.
Grato pela ajuda.
Tenho duas consultas abaixo relacionadas:
esta é a primeira:
==========================================================================================================
SELECT Lancamentos.CodConta, Lancamentos.Centrocst, Month([Dtlcto]) AS Mês, Year([Dtlcto]) AS Ano, Sum(Lancamentos.ValorMObjet) AS ExecutadoMensal, 0 AS OrcadoMensal, Format(DSum("[saldo]","qry_ExecutadoMensal","[Mês] <= " & [Mês] & "And [Ano] = " & [Ano] & "And [Centrocst] = " & [Centrocst] & "And [CodConta] = " & [CodConta]),"Currency") AS ExecutadoAcum, 0 AS OrcadoAcum
FROM Lancamentos
GROUP BY Lancamentos.CodConta, Lancamentos.Centrocst, Month([Dtlcto]), Year([Dtlcto])
HAVING (((Year([Dtlcto]))=Year(Date())));
Esta é a segunda:
============================================================================================================
SELECT PlanejamentoAnual.CodConta, PlanejamentoAnual.Centrocst, PlanejamentoAnual.MesRef AS Mês, PlanejamentoAnual.AnoRef AS Ano, 0 AS ExecutadoMensal, Sum(PlanejamentoAnual.CustosPlan) AS OrcadoMensal, 0 AS ExecutadoAcum, Format(DSum("[Saldo]","qry_OrcadoMensal","[MesRef] <= " & [MesRef] & "And [AnoRef] = " & [AnoRef] & "And [Centrocst] = " & [Centrocst] & "And [CodConta] = " & [CodConta]),"Currency") AS OrcadoAcum
FROM PlanejamentoAnual
GROUP BY PlanejamentoAnual.CodConta, PlanejamentoAnual.Centrocst, PlanejamentoAnual.MesRef, PlanejamentoAnual.AnoRef
HAVING (((PlanejamentoAnual.AnoRef)=Year(Date())));
=============================================================================================================
Esta terceira é uma consulta union das duas primeira:
==============================================================================================================
SELECT Lancamentos.CodConta, Lancamentos.Centrocst, Month([Dtlcto]) AS Mês, Year([Dtlcto]) AS Ano, Sum(Lancamentos.ValorMObjet) AS ExecutadoMensal, 0 AS OrcadoMensal, Format(DSum("[saldo]","qry_ExecutadoMensal","[Mês] <= " & [Mês] & "And [Ano] = " & [Ano] & "And [Centrocst] = " & [Centrocst] & "And [CodConta] = " & [CodConta]),"Currency") AS ExecutadoAcum, 0 AS OrcadoAcum
FROM Lancamentos
GROUP BY Lancamentos.CodConta, Lancamentos.Centrocst, Month([Dtlcto]), Year([Dtlcto])
HAVING (((Year([Dtlcto]))=Year(Date()))) UNION SELECT PlanejamentoAnual.CodConta, PlanejamentoAnual.Centrocst, PlanejamentoAnual.MesRef AS Mês, PlanejamentoAnual.AnoRef AS Ano, 0 AS ExecutadoMensal, Sum(PlanejamentoAnual.CustosPlan) AS OrcadoMensal, 0 AS ExecutadoAcum, Format(DSum("[Saldo]","qry_OrcadoMensal","[MesRef] <= " & [MesRef] & "And [AnoRef] = " & [AnoRef] & "And [Centrocst] = " & [Centrocst] & "And [CodConta] = " & [CodConta]),"Currency") AS OrcadoAcum
FROM PlanejamentoAnual
GROUP BY PlanejamentoAnual.CodConta, PlanejamentoAnual.Centrocst, PlanejamentoAnual.MesRef, PlanejamentoAnual.AnoRef
HAVING (((PlanejamentoAnual.AnoRef)=Year(Date())));
==============================================================================================================
e esta é o agrupamento da terceira, que é a base de um relatorio gerencial:
==============================================================================================================
SELECT qry_ExecutadoOrcadoAcumMes.CodConta, qry_ExecutadoOrcadoAcumMes.Centrocst, qry_ExecutadoOrcadoAcumMes.Mês, qry_ExecutadoOrcadoAcumMes.Ano, Sum(qry_ExecutadoOrcadoAcumMes.Executado) AS ExecutadoMensal, Sum(qry_ExecutadoOrcadoAcumMes.OrcadoMensal) AS OrcadoMensal, Sum(Format([ExecutadoAcum],"Currency")) AS ExecutadoAcumulado, Sum(qry_ExecutadoOrcadoAcumMes.OrcadoAcum) AS OrcadoAcumulado, Contas.Conta, [ExecutadoMensal]-[OrcadoMensal] AS Desvio, IIf([OrcadoMensal]=0,0,[Desvio]/[OrcadoMensal]) AS Desvio2, Classes.CodClasse, Grupos.CodGrupo, Contas.CodCusto
FROM (((qry_ExecutadoOrcadoAcumMes INNER JOIN Contas ON qry_ExecutadoOrcadoAcumMes.CodConta = Contas.CodConta) INNER JOIN Classes ON Contas.CodClasse = Classes.CodClasse) INNER JOIN Grupos ON Classes.CodGrupo = Grupos.CodGrupo) INNER JOIN CentroDeCusto ON qry_ExecutadoOrcadoAcumMes.Centrocst = CentroDeCusto.Centrocst
GROUP BY qry_ExecutadoOrcadoAcumMes.CodConta, qry_ExecutadoOrcadoAcumMes.Centrocst, qry_ExecutadoOrcadoAcumMes.Mês, qry_ExecutadoOrcadoAcumMes.Ano, Contas.Conta, Classes.CodClasse, Grupos.CodGrupo, Contas.CodCusto;
==============================================================================================================
Pelo painel de navegação está pesando o banco de dados. Como faço para executar estas pelo menos as duas primeiras consultas criando tabelas temporarias e apartir dai criar as consultas 3 e 4 ? já vi que fica mais rápido fazer pelo vba, mas não tenho os comandos necessários para fazê-los.
Alguem tem alguma ideia? qualquer coisa serve, seja criando tabelas temporárias, seja função ou outra coisa que seja mais rápido.
Grato pela ajuda.