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 

stored procedure firebird que retorne saldos várias contas

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
AntonioJose
Novato
Novato


Registrado: Quinta-Feira, 17 de Agosto de 2006
Mensagens: 24

MensagemEnviada: Sex Jan 24, 2014 11:48 am    Assunto: stored procedure firebird que retorne saldos várias contas Responder com Citação

Estou tentando criar uma stored procedure firebird que retorne saldos das contas do banco de dados.
fiz da seguinte maneira. Mas não calcula os saldos de cada conta. Somente saldo geral como se não tivesse outra conta.
Queria que quando a conta fosse diferente o saldo começasse do zero novamente e assim todas as vezes que a conta mudasse de nome.
segue o codigo que estou tentando:

CREATE PROCEDURE LIVRO_CAIXA2
returns (
idcaixa integer,
datacaixa date,
historico varchar(70),
conta varchar(1Cool,
entrada decimal(15,2),
saida decimal(15,2),
saldo decimal(15,2),
controle varchar(10))
as
declare variable saldoatual decimal(15,2);
begin
saldoatual = 0;

for select c.conte, c.codc, c.datalanc, c.historico, c.credito, c.debito, c.dc
from caixa c order by C.conte, C.datalanc
into
:conta,
:idcaixa,
:datacaixa,
:historico,
:entrada,
:saida,
:controle

do
begin

saldo = saldoatual + :entrada - :saida;
saldoatual = :saldo;


suspend;
end
end
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 Jan 24, 2014 2:05 pm    Assunto: Responder com Citação

Boa tarde,

Qual banco de dados (e versão) você está utilizando? Firebird?
Existe uma tabela de contas no seu banco de dados?


Editado pela última vez por imex em Ter Mar 21, 2023 4:48 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AntonioJose
Novato
Novato


Registrado: Quinta-Feira, 17 de Agosto de 2006
Mensagens: 24

MensagemEnviada: Sex Jan 24, 2014 2:32 pm    Assunto: Responder com Citação

Estou usando firebird 2.1

tabela caixa:

CREATE TABLE CAIXA (
CODC INTEGER,
CREDITO NUMERIC(15,2),
DEBITO NUMERIC(15,2),
DATALANC DATE,
HISTORICO VARCHAR(55),
DC VARCHAR(1),
CONTE VARCHAR(15)

);
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 Jan 24, 2014 3:27 pm    Assunto: Responder com Citação

Experimente dessa forma:

Código:
as
declare variable saldoatual decimal(15,2);
declare variable contaant varchar(19);
begin
saldoatual = 0;
contaant = '';

for select c.conte, c.codc, c.datalanc, c.historico, c.credito, c.debito, c.dc
from caixa c order by C.conte, C.datalanc
into
:conta,
:idcaixa,
:datacaixa,
:historico,
:entrada,
:saida,
:controle

do
begin

  if (conta <> contaant) then
    begin
      contaant = conta;
      saldoatual = 0;
    end

  saldo = saldoatual + :entrada - :saida;
  saldoatual = :saldo;

  suspend;
end
end


Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AntonioJose
Novato
Novato


Registrado: Quinta-Feira, 17 de Agosto de 2006
Mensagens: 24

MensagemEnviada: Sex Jan 24, 2014 3:52 pm    Assunto: Responder com Citação

imex escreveu:
Experimente dessa forma:

Código:
as
declare variable saldoatual decimal(15,2);
declare variable contaant varchar(19);
begin
saldoatual = 0;
contaant = '';

for select c.conte, c.codc, c.datalanc, c.historico, c.credito, c.debito, c.dc
from caixa c order by C.conte, C.datalanc
into
:conta,
:idcaixa,
:datacaixa,
:historico,
:entrada,
:saida,
:controle

do
begin

  if (conta <> contaant) then
    begin
      contaant = conta;
      saldoatual = 0;
    end

  saldo = saldoatual + :entrada - :saida;
  saldoatual = :saldo;

  suspend;
end
end


Espero que ajude.



Amigo..

Exatamente isso Obrigado. Ficou do jeito que eu queria;

Eu aproveitei e criei também o saldo anterior para facilitar quando for emitir um relatorio. Quem interesar, ficou assim:
CREATE PROCEDURE LIVRO_CAIXA2
returns (
idcaixa integer,
datacaixa date,
historico varchar(70),
conta varchar(1Cool,
entrada decimal(15,2),
saida decimal(15,2),
saldoa decimal(15,2),
saldo decimal(15,2),
controle varchar(10))
as
declare variable saldoanterior decimal(15,2);
declare variable contaant varchar(1Cool;
declare variable saldoatual decimal(15,2);
begin
saldoatual = 0;
contaant = '';
SALDOANTERIOR = 0;
for select c.conte, c.codc, c.datalanc, c.historico, c.credito, c.debito, c.dc
from caixa c order by C.conte, C.datalanc
into
:conta,
:idcaixa,
:datacaixa,
:historico,
:entrada,
:saida,
:controle

do
begin

if (conta <> contaant) then
begin
contaant = conta;
saldoatual = 0;
SALDOANTERIOR = 0;
end
saldo = saldoatual + :entrada - :saida;
saldoatual = :saldo;
saldoa = SALDOATUAL - :entrada + :saida;

suspend;
end
end
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
renanbg
Colaborador
Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012
Mensagens: 1158

MensagemEnviada: Qua Set 13, 2017 11:41 am    Assunto: Responder com Citação

Tenho um caso semelhante, porém preciso filtrar essa procedure pelo nome da conta.

ex:

caixa interno
banco do brasil
etc..

Como poderia ajustar essa procedure para buscar essa informação?
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
Página 1 de 1

 
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