|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Nov 20, 2020 2:13 pm Assunto: Débito, crédito e saldo Firebird? |
|
|
Como faço debito, crédito e saldo no firebird?
Assim não funciona como preciso
Código: | SELECT MC.DATA,
MC.NUMERO,
MC.FAVORECIDO,
PC.NOME,
MC.HISTORICO,
SUM(CASE WHEN MC.TIPO = 0 THEN
MC.VALOR
ELSE 0 END) AS DEPOSITO,
SUM(CASE WHEN MC.TIPO = 1 THEN
MC.VALOR
ELSE 0 END) AS PAGAMENTO,
SUM(MC.VALOR * CASE WHEN MC.TIPO = 1 THEN -1 ELSE 1 END) AS SALDO
FROM MOVCONTA MC
INNER JOIN PLANODECONTAS PC ON PC.ID = MC.ID_PLANCONTA
WHERE MC.ID_CONTA = :PID_CONTA
AND MC.DATA BETWEEN :PDATA1 AND :PDATA2
GROUP BY 1,2,3,4,5 |
Preciso ir somando como um extrato de banco. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Nov 20, 2020 4:22 pm Assunto: |
|
|
Boa tarde,
O problema está no saldo?
Qual versão do Firebird você está utilizando?
Não utilizei mas se for a versão 3 ou mais recente acredito que você pode utilizar as novas "window functions". Se for uma versão anterior acredito que você terá que criar uma SP para obter esse resultado.
Editado pela última vez por imex em Qui Set 16, 2021 9:08 am, num total de 1 vez |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Nov 20, 2020 4:34 pm Assunto: |
|
|
imex escreveu: | Boa tarde,
O problema está no saldo?
Qual versão do Firebird você está utilizando?
Não utilizei mas se for a versão 3 ou mais recente acredito que você pode utilizar as novas "window functions". Se for uma versão anterior acredito que você terá que criar uma SP para obter esse resultado.
|
Boa tarde Imex,
Uso o FB 2.5
Será que ai só via SP?
Tem um exemplo de uso SP?
O problema está no saldo?
Quero mostrar na coluna saldo acumulativo entre deposito e pagamento _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Nov 20, 2020 5:14 pm Assunto: |
|
|
Acho que na 2.5 só com SP mesmo. Segue uma sugestão para testes:
Código: | create or alter procedure Minha_SP (
PID_CONTA integer,
PDATA1 date,
PDATA2 date)
returns (
DATA date,
NUMERO integer,
FAVORECIDO integer,
NOME varchar(100),
HISTORICO varchar(200),
DEPOSITO decimal(18, 2),
PAGAMENTO decimal(18, 2),
SALDO decimal(18, 2))
as
begin
SALDO = 0;
FOR SELECT MC.DATA,
MC.NUMERO,
MC.FAVORECIDO,
PC.NOME,
MC.HISTORICO,
SUM(CASE WHEN MC.TIPO = 0 THEN MC.VALOR ELSE 0 END),
SUM(CASE WHEN MC.TIPO = 1 THEN MC.VALOR ELSE 0 END)
FROM MOVCONTA MC
INNER JOIN PLANODECONTAS PC ON PC.ID = MC.ID_PLANCONTA
WHERE MC.ID_CONTA = :PID_CONTA
AND MC.DATA BETWEEN :PDATA1 AND :PDATA2
GROUP BY 1,2,3,4,5
INTO :DATA, :NUMERO, :FAVORECIDO, :NOME, :HISTORICO,
:DEPOSITO, PAGAMENTO DO
BEGIN
SALDO = SALDO + DEPOSITO - PAGAMENTO;
SUSPEND;
END
end^ |
Espero que ajude |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Nov 20, 2020 5:29 pm Assunto: |
|
|
imex escreveu: | Acho que na 2.5 só com SP mesmo. Segue uma sugestão para testes:
Código: | create or alter procedure Minha_SP (
PID_CONTA integer,
PDATA1 date,
PDATA2 date)
returns (
DATA date,
NUMERO integer,
FAVORECIDO integer,
NOME varchar(100),
HISTORICO varchar(200),
DEPOSITO decimal(18, 2),
PAGAMENTO decimal(18, 2),
SALDO decimal(18, 2))
as
begin
SALDO = 0;
FOR SELECT MC.DATA,
MC.NUMERO,
MC.FAVORECIDO,
PC.NOME,
MC.HISTORICO,
SUM(CASE WHEN MC.TIPO = 0 THEN MC.VALOR ELSE 0 END),
SUM(CASE WHEN MC.TIPO = 1 THEN MC.VALOR ELSE 0 END)
FROM MOVCONTA MC
INNER JOIN PLANODECONTAS PC ON PC.ID = MC.ID_PLANCONTA
WHERE MC.ID_CONTA = :PID_CONTA
AND MC.DATA BETWEEN :PDATA1 AND :PDATA2
GROUP BY 1,2,3,4,5
INTO :DATA, :NUMERO, :FAVORECIDO, :NOME, :HISTORICO,
:DEPOSITO, PAGAMENTO DO
BEGIN
SALDO = SALDO + DEPOSITO - PAGAMENTO;
SUSPEND;
END
end^ |
Espero que ajude |
Nossa deu certinho. Obrigado Imex. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Nov 20, 2020 6:04 pm Assunto: |
|
|
Você não pode fazer pela aplicação? Não seria o saldo do último registro? Não pode usar o Last? |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Nov 23, 2020 11:43 am Assunto: |
|
|
A ideia era utilizar um Label ou outro componente que não seja da aba Data Control para exibir o saldo. |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Nov 23, 2020 3:01 pm Assunto: |
|
|
Pelo que entendi acho que você pode configurar a propriedade DisplayFormat do Field mais ou menos com o valor abaixo:
Código: | #,##0.00;#,##0.00;# |
Espero que ajude |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Seg Nov 23, 2020 3:25 pm Assunto: |
|
|
O valor negativo? Pode ser na aplicação? Talvez com essa máscara?
Código: | #,##0.00;(#,##0.00);# |
|
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|