ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Débito, crédito e saldo Firebird?
Ir à página 1, 2, 3, 4, 5  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Nov 20, 2020 2:13 pm    Assunto: Débito, crédito e saldo Firebird? Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Nov 20, 2020 4:22 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Nov 20, 2020 4:34 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Nov 20, 2020 5:14 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Nov 20, 2020 5:29 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Sex Nov 20, 2020 5:47 pm    Assunto: Responder com Citação

Nessa SP tem como ter um saldo final para eu colocar em outro dbtext? Tentei usar um campo agregate no componente FDStoredProcedure mais parece não dar certo, não mostra a soma do campo expressão sum(deposito - pagamento), queria mostrar num dbtext esse saldo final por conta.
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Nov 20, 2020 6:04 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Nov 23, 2020 11:03 am    Assunto: Responder com Citação

imex escreveu:
Você não pode fazer pela aplicação? Não seria o saldo do último registro? Não pode usar o Last?
Sim é o ultimo saldo, mais ai se eu apontar o campo saldo para dbtext ele não vai ficar expondo o saldo cfe eu dar um click no dbgrid na linha corrente?

Talvez não tenha entendido a sua ideia.
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Nov 23, 2020 11:43 am    Assunto: Responder com Citação

A ideia era utilizar um Label ou outro componente que não seja da aba Data Control para exibir o saldo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Nov 23, 2020 1:14 pm    Assunto: Responder com Citação

imex escreveu:
A ideia era utilizar um Label ou outro componente que não seja da aba Data Control para exibir o saldo.
Entendi, vou fazer desta forma então.

Obrigado.
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Nov 23, 2020 2:10 pm    Assunto: Responder com Citação

Tem uma forma de em vez de mostrar valor zerado mostrar sem valor na coluna quando for zero?
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Nov 23, 2020 3:01 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Nov 23, 2020 3:10 pm    Assunto: Responder com Citação

imex escreveu:
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
Isso mesmo, resolvido o problema....Obrigado
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Nov 23, 2020 3:22 pm    Assunto: Responder com Citação

Aproveitando, como coloco esse campo entre parenteses

Código:
'(' || SUM(CASE WHEN MC.TIPO = 1 THEN cast(MC.VALOR as numeric(12,2)) END) || ')'


Assim não da, tem uma forma?
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Nov 23, 2020 3:25 pm    Assunto: Responder com Citação

O valor negativo? Pode ser na aplicação? Talvez com essa máscara?

Código:
#,##0.00;(#,##0.00);#
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Ir à página 1, 2, 3, 4, 5  Próximo
Página 1 de 5

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB