QUERY SUM()
o que há de errado, não funciona. aqui.. banco de dados mysql
Set Rst = New ADODB.Recordset
Sql = [Ô]Select (Select SUM(ds_valorentrada) from tb_fluxocaixa_diversos where (ds_statusoperacao = [ô]E[ô]) - SELECT SUM(ds_valorentrada) from tb_fluxocaixa_diversos WHERE (ds_statusoperacao = [ô]S[ô])) As Saldo_Caixa[Ô]
Rst.Open Sql, Conexao, 3
If Rst!Saldo_Caixa > 0 Then
lblvalortotal_saldo.Caption = Format(Rst!Saldo_Caixa, [Ô]###,##0.00[Ô])
End If
Qual retorno vc tem ?
E o Agrupamento(Group By), não precisa ?
E o Agrupamento(Group By), não precisa ?
ERRO DE sintaxe
da clausula where pra frente...
where (ds_statusoperacao = [ô]E[ô]) - SELECT SUM(ds_valorentrada) from tb_fluxocaixa_diversos WHERE (ds_statusoperacao = [ô]S[ô])) As Saldo_Caixa[Ô]
da clausula where pra frente...
where (ds_statusoperacao = [ô]E[ô]) - SELECT SUM(ds_valorentrada) from tb_fluxocaixa_diversos WHERE (ds_statusoperacao = [ô]S[ô])) As Saldo_Caixa[Ô]
alguma sugestão...? já testei diretamente no banco mas dá erro de sintaxe
Moreira, boa noite!
Tente realizar os Selects individualmente, colocando os resultados em duas variáveis, depois uma simples operação matemática deve resolver.
Outra alternativa é utilizar o GROUP BY do campo [Ô]ds_statusoperacao[Ô] acrescentando o retorno em no select. Mais ou menos assim:
[Ô]SELECT ds_statusoperacao, SUM(ds_valorentrada) FROM tb_fluxocaixa_diversos WHERE ds_statusoperacao IN ([ô]E[ô],[ô]S[ô]) GROUP BY ds_statusoperacao[Ô]
A unica diferença é que a forma de ler o resultado teria que mudar, pois o resultado da query é apresentado em duas colunas e duas linhas, no caso do campo ds_statusoperacao conter as duas letras [ô]E[ô] e [ô]S[ô].
Tente realizar os Selects individualmente, colocando os resultados em duas variáveis, depois uma simples operação matemática deve resolver.
Outra alternativa é utilizar o GROUP BY do campo [Ô]ds_statusoperacao[Ô] acrescentando o retorno em no select. Mais ou menos assim:
[Ô]SELECT ds_statusoperacao, SUM(ds_valorentrada) FROM tb_fluxocaixa_diversos WHERE ds_statusoperacao IN ([ô]E[ô],[ô]S[ô]) GROUP BY ds_statusoperacao[Ô]
A unica diferença é que a forma de ler o resultado teria que mudar, pois o resultado da query é apresentado em duas colunas e duas linhas, no caso do campo ds_statusoperacao conter as duas letras [ô]E[ô] e [ô]S[ô].
Tente assim:
SELECT
s.Entrada, s.Saida, (s.Entrada - s.Saida) As SaldoCaixa
FROM (
SELECT
Sum(CASE WHEN ds_statusoperacao = [ô]E[ô] THEN ds_valorentrada ELSE 0 END) AS Entrada,
Sum(CASE WHEN ds_statusoperacao = [ô]S[ô] THEN ds_valorentrada ELSE 0 END) AS Saida
FROM tb_fluxocaixa_diversos
WHERE ds_statusoperacao in ([ô]E[ô],[ô]S[ô])
) s
eu sempre chato insistindo nas triggers, veja uma simples que funciona super bem, ou seja apos um simples insert se for E ou S ela abate ou acrescenta no saldo.
posta a estrutura atual da sua tabela
CREATE DEFINER='root'@'%' TRIGGER 'movimentos_before_insert' BEFORE INSERT ON 'movimentos' FOR EACH ROW BEGIN
DECLARE saldoAnterior double;
SET saldoAnterior = (SELECT M.saldo FROM movimentos M ORDER BY M.id DESC LIMIT 1);
IF (new.tipo= [ô]E[ô]) THEN
SET new.saldo = saldoAnterior + new.valor;
end if;
if (new.tipo=[ô]S[ô]) then
SET new.saldo = saldoAnterior - new.valor;
END IF;
END
posta a estrutura atual da sua tabela
Vou dar meu pitaco também, sendo mais simples.
Sql = [Ô] SELECT (SELECT SUM(ds_valorentrada) FROM tb_fluxocaixa_diversos WHERE ds_statusoperacao = [ô]E[ô] )as Tot , (SELECT SUM(ds_valorentrada) FROM tb_fluxocaixa_diversos WHERE ds_statusoperacao = [ô]S[ô] ) AS Saldo_Caixa FROM tb_fluxocaixa_diversos [Ô]
Sql = [Ô] SELECT (SELECT SUM(ds_valorentrada) FROM tb_fluxocaixa_diversos WHERE ds_statusoperacao = [ô]E[ô] )as Tot , (SELECT SUM(ds_valorentrada) FROM tb_fluxocaixa_diversos WHERE ds_statusoperacao = [ô]S[ô] ) AS Saldo_Caixa FROM tb_fluxocaixa_diversos [Ô]
Colega,
Aqui testei e funcionou ótimo.
A query acima te informa
Total de Entradas
Total de SaÃdas
Total de SaÃdas - Entradas
Tudo de bom.
Aqui testei e funcionou ótimo.
[txt-color=#0000f0]Select
Entradas.TotalEntrada, Saidas.TotalSaida, Saidas.Totalsaida - Entradas.TotalEntrada as TotalMovimentado
from
(Select SUM(ds_valorentrada) as TotalEntrada from tb_fluxocaixa_diversos where (ds_statusoperacao = [ô]E[ô])) as Entradas,
(Select SUM(ds_valorentrada) as TotalSaida from tb_fluxocaixa_diversos where (ds_statusoperacao = [ô]S[ô])) as Saidas
[/txt-color]
A query acima te informa
Tudo de bom.
Tópico encerrado , respostas não são mais permitidas