| 
			
				|  | 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.
 
 |  |