| 
			
				|  | 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 Fev 26, 2021 5:39 pm    Assunto: |   |  
				| 
 |  
				| Parece que o primeiro probema foi por falta de fechar o bloco 
  	  | Código: |  	  | begin if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 TOTAL_GERAL = 0;
 
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito + pagamento;
 end
 | 
 
 Ja o segundo problema acho que assim resolve no filtro mais essa condição
 
  	  | Código: |  	  | AND ( (UPPER(C.NOMEFANTASIA) LIKE :PCONDICAO) OR '          (UPPER(MC.FAVORECIDO) LIKE :PCONDICAO) or (mc.id_cliente is null) )
 | 
 _________________
 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
 
 Editado pela última vez por adriano_servitec em Sáb Fev 27, 2021 8:09 am, num total de 1 vez
 |  |  
		| 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
 
 
 | 
			
				|  Enviada: Sáb Fev 27, 2021 8:26 am    Assunto: |   |  
				| 
 |  
				| Será que é assim a forma correta? 
 Só deixei esse dois aqui
 
  	  | Código: |  	  | total_geral_credito = total_geral_credito + deposito; total_geral_debito = total_geral_debito +- pagamento;
 
 | 
 
 
  	  | Código: |  	  | create or alter procedure SP_REL_MOVIMENTACAO ( PID_CONTA varchar(1025),
 PDATA1 date,
 PDATA2 date,
 PSTATUS varchar(255),
 PCONDICAO varchar(255),
 PNAOMOSTRARSALDO integer,
 PUSUARIO varchar(100))
 returns (
 ID_CONTA integer,
 NOME_CONTA varchar(100) character set WIN1252 collate WIN_PTBR,
 ID integer,
 DATA date,
 NUMERO varchar(20),
 ID_CLIENTE integer,
 FAVORECIDO varchar(100) character set WIN1252 collate WIN_PTBR,
 ID_PLANCONTA integer,
 NOME varchar(100) character set WIN1252 collate WIN_PTBR,
 HISTORICO varchar(200) character set WIN1252 collate WIN_PTBR,
 SALDO_ANT numeric(15,2),
 DEPOSITO numeric(15,2),
 PAGAMENTO numeric(15,2),
 SALDO numeric(15,2),
 TIPO integer,
 STATUS integer,
 ID_CCUSTO integer,
 NOME_CCUSTO varchar(100) character set WIN1252 collate WIN_PTBR,
 VALOR numeric(15,2),
 D_C char(1),
 TOTAL_GERAL numeric(15,2),
 SALDO_POR_CONTA numeric(15,2),
 TOTAL_GERAL_DEBITO numeric(15,2),
 TOTAL_GERAL_CREDITO numeric(15,2))
 as
 declare variable ID_CONTA_ANT integer;
 declare variable INICIO_CONTA char(1);
 BEGIN
 ID_CONTA_ANT = 0;
 TOTAL_GERAL = 0;
 total_geral_debito = 0;
 total_geral_credito = 0;
 FOR
 SELECT
 MC.ID_CONTA,
 MC.ID,
 MC.DATA,
 MC.NUMERO,
 MC.ID_CLIENTE,
 CASE WHEN MC.FAVORECIDO IS NULL THEN
 C.NOMEFANTASIA
 ELSE
 MC.FAVORECIDO
 END,
 MC.ID_PLANCONTA,
 MC.ID_CCUSTO,
 MC.HISTORICO,
 MC.STATUS,
 MC.TIPO,
 SUM(MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE 0 END),
 SUM(MC.VALOR * CASE WHEN MC.TIPO IN (1, 2) THEN 1 ELSE 0 END),
 SUM(MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE -1 END),
 IIF( MC.TIPO IN (1, 2), 'D', 'C')
 FROM MOVCONTA MC
 LEFT JOIN CLIENTE C ON C.ID = MC.ID_CLIENTE
 INNER JOIN USUARIOCONTAS UC ON UC.CONTA_ID = MC.ID_CONTA
 
 WHERE POSITION(cast(MC.ID_CONTA as varchar(255)) || ',', :PID_CONTA) > 0 AND
 MC.Data <= : PDATA2
 AND ( (UPPER(C.NOMEFANTASIA) LIKE :PCONDICAO) OR
 (UPPER(MC.FAVORECIDO) LIKE :PCONDICAO) or (mc.id_cliente is null) )
 
 AND UC.CD_USUARIO LIKE :PUSUARIO
 
 GROUP BY 1,2,3,4,5,6,7,8,9,10,11
 ORDER BY mc.id_conta, MC.DATA, MC.ID
 
 INTO : ID_CONTA, : ID, : DATA, : NUMERO, : ID_CLIENTE, : FAVORECIDO,
 : ID_PLANCONTA, : ID_CCUSTO,
 : HISTORICO, : STATUS, : TIPO,
 : DEPOSITO, : PAGAMENTO,
 : VALOR, : D_C
 DO BEGIN
 IF (ID_CONTA <> ID_CONTA_ANT) THEN
 BEGIN
 ID_CONTA_ANT = ID_CONTA;
 INICIO_CONTA = 'S';
 SALDO = 0;
 saldo_por_conta = 0;
 END
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO_ANT = SALDO;
 end
 else
 saldo_ant = 0;
 
 IF (: STATUS <> 30) THEN
 if (: data >= : pdata1 ) then
 saldo_por_conta = saldo_por_conta + DEPOSITO - PAGAMENTO;
 
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito +- pagamento;
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO = SALDO + DEPOSITO - PAGAMENTO;
 end
 else
 SALDO = 0;
 
 IF (: DATA >= : PDATA1) THEN
 BEGIN
 IF (INICIO_CONTA = 'S') THEN
 BEGIN
 INICIO_CONTA = 'N';
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 TOTAL_GERAL = 0;
 end
 
 SELECT REPLACE (CT.NOME,  '  ', ' ') AS NOME_CONTA
 FROM CONTA CT
 WHERE CT.ID = :ID_CONTA
 INTO : NOME_CONTA;
 
 SELECT PC.NOME
 FROM PLANODECONTAS PC
 WHERE PC.ID = :ID_PLANCONTA
 INTO : NOME;
 
 SELECT CC.NOME
 FROM CENTRODECUSTO CC
 WHERE CC.ID = :ID_CCUSTO
 INTO : NOME_CCUSTO;
 SUSPEND;
 END
 END
 END
 | 
 _________________
 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: Seg Mar 01, 2021 10:15 am    Assunto: |   |  
				| 
 |  
				| Acho que talvez esteja faltando o If para ver se o status é diferente de 30: 
 
  	  | Código: |  	  | IF (: STATUS <> 30) THEN begin
 if (: data >= : pdata1 ) then
 saldo_por_conta = saldo_por_conta + DEPOSITO - PAGAMENTO;
 
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito + pagamento;
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO = SALDO + DEPOSITO - PAGAMENTO;
 end
 else
 SALDO = 0;
 end
 
 IF (: DATA >= : PDATA1) THEN
 BEGIN
 IF (INICIO_CONTA = 'S') THEN
 BEGIN
 INICIO_CONTA = 'N';
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 IF (: STATUS <> 30) THEN
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 TOTAL_GERAL = 0;
 end
 | 
 
 Espero que ajude
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 | 
			
				|  Enviada: Seg Mar 01, 2021 2:44 pm    Assunto: |   |  
				| 
 |  
				| Boa tarde, 
 Fiz 2 lancamentos para este mes
 Valor 5.000,00
 e outro 400,00
 
 Ai no SP chamei do periodo 01/03/2021 a 31/03/2021
 
 E esta vindo 3X o valor
 15.000,00
 1.200
 
 Sabe dizer o que aconteceu?
 
 A SP
 
  	  | Código: |  	  | create or alter procedure XSP_REL_MOVIMENTACAO ( PID_CONTA varchar(1025),
 PDATA1 date,
 PDATA2 date,
 PSTATUS varchar(255),
 PCONDICAO varchar(255),
 PNAOMOSTRARSALDO integer,
 PUSUARIO varchar(100))
 returns (
 ID_CONTA integer,
 NOME_CONTA varchar(100) character set WIN1252 collate WIN_PTBR,
 ID integer,
 DATA date,
 NUMERO varchar(20),
 ID_CLIENTE integer,
 FAVORECIDO varchar(100) character set WIN1252 collate WIN_PTBR,
 ID_PLANCONTA integer,
 NOME varchar(100) character set WIN1252 collate WIN_PTBR,
 HISTORICO varchar(200) character set WIN1252 collate WIN_PTBR,
 SALDO_ANT numeric(15,2),
 DEPOSITO numeric(15,2),
 PAGAMENTO numeric(15,2),
 SALDO numeric(15,2),
 TIPO integer,
 STATUS integer,
 ID_CCUSTO integer,
 NOME_CCUSTO varchar(100) character set WIN1252 collate WIN_PTBR,
 VALOR numeric(15,2),
 D_C char(1),
 TOTAL_GERAL numeric(15,2),
 SALDO_POR_CONTA numeric(15,2),
 TOTAL_GERAL_DEBITO numeric(15,2),
 TOTAL_GERAL_CREDITO numeric(15,2))
 as
 declare variable ID_CONTA_ANT integer;
 declare variable INICIO_CONTA char(1);
 BEGIN
 ID_CONTA_ANT = 0;
 TOTAL_GERAL = 0;
 total_geral_debito = 0;
 total_geral_credito = 0;
 FOR
 SELECT
 MC.ID_CONTA,
 MC.ID,
 MC.DATA,
 MC.NUMERO,
 MC.ID_CLIENTE,
 CASE WHEN MC.FAVORECIDO IS NULL THEN
 C.NOMEFANTASIA
 ELSE
 MC.FAVORECIDO
 END,
 MC.ID_PLANCONTA,
 MC.ID_CCUSTO,
 MC.HISTORICO,
 MC.STATUS,
 MC.TIPO,
 SUM(MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE 0 END),
 SUM(MC.VALOR * CASE WHEN MC.TIPO IN (1, 2) THEN 1 ELSE 0 END),
 SUM(MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE -1 END),
 IIF( MC.TIPO IN (1, 2), 'D', 'C')
 FROM MOVCONTA MC
 LEFT JOIN CLIENTE C ON C.ID = MC.ID_CLIENTE
 INNER JOIN USUARIOCONTAS UC ON UC.CONTA_ID = MC.ID_CONTA
 
 WHERE POSITION(cast(MC.ID_CONTA as varchar(255)) || ',', :PID_CONTA) > 0 AND
 MC.Data <= : PDATA2
 AND ( (UPPER(C.NOMEFANTASIA) LIKE :PCONDICAO) OR
 (UPPER(MC.FAVORECIDO) LIKE :PCONDICAO) or (mc.id_cliente is null) )
 
 AND UC.CD_USUARIO LIKE :PUSUARIO
 
 GROUP BY 1,2,3,4,5,6,7,8,9,10,11
 ORDER BY mc.id_conta, MC.DATA, MC.ID
 
 INTO : ID_CONTA, : ID, : DATA, : NUMERO, : ID_CLIENTE, : FAVORECIDO,
 : ID_PLANCONTA, : ID_CCUSTO,
 : HISTORICO, : STATUS, : TIPO,
 : DEPOSITO, : PAGAMENTO,
 : VALOR, : D_C
 DO BEGIN
 IF (ID_CONTA <> ID_CONTA_ANT) THEN
 BEGIN
 ID_CONTA_ANT = ID_CONTA;
 INICIO_CONTA = 'S';
 SALDO = 0;
 saldo_por_conta = 0;
 END
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO_ANT = SALDO;
 end
 else
 saldo_ant = 0;
 
 IF (: STATUS <> 30) THEN
 BEGIN
 if (: data >= : pdata1 ) then
 saldo_por_conta = saldo_por_conta + DEPOSITO - PAGAMENTO;
 
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito +- pagamento;
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO = SALDO + DEPOSITO - PAGAMENTO;
 end
 else
 SALDO = 0;
 END
 
 IF (: DATA >= : PDATA1) THEN
 BEGIN
 IF (INICIO_CONTA = 'S') THEN
 BEGIN
 INICIO_CONTA = 'N';
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 TOTAL_GERAL = 0;
 end
 
 SELECT REPLACE (CT.NOME,  '  ', ' ') AS NOME_CONTA
 FROM CONTA CT
 WHERE CT.ID = :ID_CONTA
 INTO : NOME_CONTA;
 
 SELECT PC.NOME
 FROM PLANODECONTAS PC
 WHERE PC.ID = :ID_PLANCONTA
 INTO : NOME;
 
 SELECT CC.NOME
 FROM CENTRODECUSTO CC
 WHERE CC.ID = :ID_CCUSTO
 INTO : NOME_CCUSTO;
 SUSPEND;
 END
 END
 END
 | 
 _________________
 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
 
 
 | 
			
				|  Enviada: Seg Mar 01, 2021 3:34 pm    Assunto: |   |  
				| 
 |  
				| O problema parece estar no select 
  	  | Código: |  	  | SELECT mc.id_conta, MC.id,
 MC.data,
 MC.numero,
 MC.id_cliente,
 CASE
 WHEN MC.favorecido IS NULL THEN C.nomefantasia
 ELSE MC.favorecido
 END,
 MC.id_planconta,
 MC.id_ccusto,
 MC.historico,
 MC.status,
 MC.tipo,
 SUM(MC.valor * CASE
 WHEN MC.tipo IN ( 0, 3 ) THEN 1
 ELSE 0
 END),
 SUM(MC.valor * CASE
 WHEN MC.tipo IN ( 1, 2 ) THEN 1
 ELSE 0
 END),
 SUM(MC.valor * CASE
 WHEN MC.tipo IN ( 0, 3 ) THEN 1
 ELSE -1
 END),
 Iif(MC.tipo IN ( 1, 2 ), 'D', 'C')
 FROM   movconta MC
 left join cliente C
 ON C.id = MC.id_cliente
 inner join conta CT
 ON CT.id = MC.id_conta
 inner join usuariocontas UC
 ON UC.conta_id = CT.id
 WHERE  Position(Cast(MC.id_conta AS VARCHAR(255))
 || ',', :PID_CONTA) > 0
 AND MC.data BETWEEN :pdata1 AND : PDATA2
 AND ( ( Upper(C.nomefantasia) LIKE :PCONDICAO )
 OR ( Upper(MC.favorecido) LIKE :PCONDICAO )
 OR ( MC.id_cliente IS NULL ) )
 AND UC.cd_usuario LIKE :PUSUARIO
 GROUP  BY 1,
 2,
 3,
 4,
 5,
 6,
 7,
 8,
 9,
 10,
 11
 ORDER  BY mc.id_conta,
 MC.data,
 MC.id
 | 
 
 Esta somando 3X o VALOR, ou seja o SUM esta triplicando o valor. Acho que não deve ter um sum nesse campos
 _________________
 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
 
 
 | 
			
				|  Enviada: Seg Mar 01, 2021 3:47 pm    Assunto: |   |  
				| 
 |  
				| Assim parece dar certo os valores 
  	  | Código: |  	  | create or alter procedure XSP_REL_MOVIMENTACAO ( PID_CONTA varchar(1025),
 PDATA1 date,
 PDATA2 date,
 PSTATUS varchar(255),
 PCONDICAO varchar(255),
 PNAOMOSTRARSALDO integer,
 PUSUARIO varchar(100))
 returns (
 ID_CONTA integer,
 NOME_CONTA varchar(100) character set WIN1252 collate WIN_PTBR,
 ID integer,
 DATA date,
 NUMERO varchar(20),
 ID_CLIENTE integer,
 FAVORECIDO varchar(100) character set WIN1252 collate WIN_PTBR,
 ID_PLANCONTA integer,
 NOME varchar(100) character set WIN1252 collate WIN_PTBR,
 HISTORICO varchar(200) character set WIN1252 collate WIN_PTBR,
 SALDO_ANT numeric(15,2),
 DEPOSITO numeric(15,2),
 PAGAMENTO numeric(15,2),
 SALDO numeric(15,2),
 TIPO integer,
 STATUS integer,
 ID_CCUSTO integer,
 NOME_CCUSTO varchar(100) character set WIN1252 collate WIN_PTBR,
 VALOR numeric(15,2),
 D_C char(1),
 TOTAL_GERAL numeric(15,2),
 SALDO_POR_CONTA numeric(15,2),
 TOTAL_GERAL_DEBITO numeric(15,2),
 TOTAL_GERAL_CREDITO numeric(15,2))
 as
 declare variable ID_CONTA_ANT integer;
 declare variable INICIO_CONTA char(1);
 BEGIN
 ID_CONTA_ANT = 0;
 TOTAL_GERAL = 0;
 total_geral_debito = 0;
 total_geral_credito = 0;
 FOR
 SELECT
 MC.ID_CONTA,
 MC.ID,
 MC.DATA,
 MC.NUMERO,
 MC.ID_CLIENTE,
 CASE WHEN MC.FAVORECIDO IS NULL THEN
 C.NOMEFANTASIA
 ELSE
 MC.FAVORECIDO
 END,
 MC.ID_PLANCONTA,
 MC.ID_CCUSTO,
 MC.HISTORICO,
 MC.STATUS,
 MC.TIPO,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (1, 2) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE -1 END,
 IIF( MC.TIPO IN (1, 2), 'D', 'C')
 FROM MOVCONTA MC
 LEFT JOIN CLIENTE C ON C.ID = MC.ID_CLIENTE
 INNER JOIN USUARIOCONTAS UC ON UC.CONTA_ID = MC.ID_CONTA
 
 WHERE POSITION(cast(MC.ID_CONTA as varchar(255)) || ',', :PID_CONTA) > 0 AND
 MC.DATA <= : PDATA2
 AND ( (UPPER(C.NOMEFANTASIA) LIKE :PCONDICAO) OR
 (UPPER(MC.FAVORECIDO) LIKE :PCONDICAO) or (mc.id_cliente is null) )
 
 AND UC.CD_USUARIO LIKE :PUSUARIO
 
 GROUP BY 1,2,3,4,5,6,7,8,9,10,11,12,13,14
 ORDER BY mc.id_conta, MC.DATA, MC.ID
 
 INTO : ID_CONTA, : ID, : DATA, : NUMERO, : ID_CLIENTE, : FAVORECIDO,
 : ID_PLANCONTA, : ID_CCUSTO,
 : HISTORICO, : STATUS, : TIPO,
 : DEPOSITO, : PAGAMENTO,
 : VALOR, : D_C
 DO BEGIN
 IF (ID_CONTA <> ID_CONTA_ANT) THEN
 BEGIN
 ID_CONTA_ANT = ID_CONTA;
 INICIO_CONTA = 'S';
 SALDO = 0;
 saldo_por_conta = 0;
 END
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO_ANT = SALDO;
 end
 else
 saldo_ant = 0;
 
 IF (: STATUS <> 30) THEN
 BEGIN
 if (: data >= : pdata1 ) then
 saldo_por_conta = saldo_por_conta + DEPOSITO - PAGAMENTO;
 
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito +- pagamento;
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO = SALDO + DEPOSITO - PAGAMENTO;
 end
 else
 SALDO = 0;
 END
 
 IF (: DATA >= : PDATA1) THEN
 BEGIN
 IF (INICIO_CONTA = 'S') THEN
 BEGIN
 INICIO_CONTA = 'N';
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 TOTAL_GERAL = 0;
 end
 
 SELECT REPLACE (CT.NOME,  '  ', ' ') AS NOME_CONTA
 FROM CONTA CT
 WHERE CT.ID = :ID_CONTA
 INTO : NOME_CONTA;
 
 SELECT PC.NOME
 FROM PLANODECONTAS PC
 WHERE PC.ID = :ID_PLANCONTA
 INTO : NOME;
 
 SELECT CC.NOME
 FROM CENTRODECUSTO CC
 WHERE CC.ID = :ID_CCUSTO
 INTO : NOME_CCUSTO;
 SUSPEND;
 END
 END
 END
 | 
 _________________
 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
 
 
 | 
			
				|  Enviada: Qua Mar 03, 2021 3:55 pm    Assunto: |   |  
				| 
 |  
				| Preciso de um total_geral_anterior ao filtro 
 Fiz assim
 
  	  | Código: |  	  | create or alter procedure XSP_REL_MOVBALANCETE ( PID_CONTA varchar(1025),
 PDATA1 date,
 PDATA2 date,
 PSTATUS varchar(255),
 PCONDICAO varchar(255),
 PNAOMOSTRARSALDO integer,
 PUSUARIO varchar(100))
 returns (
 ID_CONTA integer,
 NOME_CONTA varchar(100) character set WIN1252 collate WIN_PTBR,
 ID integer,
 DATA date,
 NUMERO varchar(20),
 ID_CLIENTE integer,
 FAVORECIDO varchar(100) character set WIN1252 collate WIN_PTBR,
 ID_PLANCONTA integer,
 NOME varchar(100) character set WIN1252 collate WIN_PTBR,
 HISTORICO varchar(200) character set WIN1252 collate WIN_PTBR,
 SALDO_ANT numeric(15,2),
 DEPOSITO numeric(15,2),
 PAGAMENTO numeric(15,2),
 SALDO numeric(15,2),
 TIPO integer,
 STATUS integer,
 ID_CCUSTO integer,
 NOME_CCUSTO varchar(100) character set WIN1252 collate WIN_PTBR,
 VALOR numeric(15,2),
 NOME_TIPO_RECEITA_DESPESA varchar(100),
 D_C char(1),
 TOTAL_GERAL numeric(15,2),
 SALDO_POR_PLANOCONTA numeric(15,2),
 TOTAL_GERAL_DEBITO numeric(15,2),
 TOTAL_GERAL_CREDITO numeric(15,2),
 TOTAL_GERAL_ANTERIOR numeric(15,2))
 as
 declare variable ID_CONTA_ANT integer;
 declare variable INICIO_PLANOCONTA char(1);
 declare variable VID_PLANCONTA integer;
 declare variable VNOME_TIPO_RECEITA_DESPESA varchar(100);
 BEGIN
 ID_CONTA_ANT = 0;
 total_geral_debito = 0;
 total_geral_credito = 0;
 VID_PLANCONTA = 0;
 vnome_tipo_receita_despesa = '';
 FOR
 SELECT
 MC.ID_CONTA,
 MC.ID,
 MC.DATA,
 MC.NUMERO,
 MC.ID_CLIENTE,
 CASE WHEN MC.FAVORECIDO IS NULL THEN
 C.NOMEFANTASIA
 ELSE
 MC.FAVORECIDO
 END,
 MC.ID_PLANCONTA,
 MC.ID_CCUSTO,
 MC.HISTORICO,
 MC.STATUS,
 MC.TIPO,
 CASE WHEN MC.TIPO IN (0, 3) THEN '< RECEITAS >'
 WHEN MC.TIPO IN (1, 2) THEN '< DESPESAS >'
 END AS NOME_TIPO_RECEITA_DESPESA,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (1, 2) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE -1 END,
 IIF( MC.TIPO IN (1, 2), 'D', 'C')
 FROM MOVCONTA MC
 LEFT JOIN CLIENTE C ON C.ID = MC.ID_CLIENTE
 LEFT JOIN USUARIOCONTAS UC ON UC.CONTA_ID = MC.ID_CONTA
 WHERE POSITION(cast(MC.ID_CONTA as varchar(1025)) || ',', :PID_CONTA) > 0
 AND  MC.DATA <= : PDATA2
 AND ( (UPPER(C.NOMEFANTASIA) LIKE :PCONDICAO) OR
 (UPPER(MC.FAVORECIDO) LIKE :PCONDICAO) )
 AND ((UC.CD_USUARIO LIKE :PUSUARIO) or (UC.cd_usuario IS NULL))
 ORDER BY NOME_TIPO_RECEITA_DESPESA DESC, MC.ID_PLANCONTA, MC.Data, MC.ID
 INTO : ID_CONTA, : ID, : DATA, : NUMERO, : ID_CLIENTE, : FAVORECIDO,
 : ID_PLANCONTA, : ID_CCUSTO, : HISTORICO, : STATUS, : TIPO, : NOME_TIPO_RECEITA_DESPESA,
 : DEPOSITO, : PAGAMENTO, : VALOR, : D_C
 DO BEGIN
 if (nome_tipo_receita_despesa <> vnome_tipo_receita_despesa) then
 BEGIN
 TOTAL_GERAL = 0;
 vnome_tipo_receita_despesa = nome_tipo_receita_despesa;
 END
 if (id_planconta <> vid_planconta) then
 BEGIN
 INICIO_PLANOCONTA = 'S';
 saldo_por_planoconta = 0;
 SALDO = 0;
 vid_planconta = id_planconta;
 END
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO_ANT = SALDO;
 end
 else
 saldo_ant = 0;
 
 total_geral_anterior = total_geral;
 
 
 IF (: STATUS <> 30) THEN
 BEGIN
 if (: data >= : pdata1 ) then
 saldo_por_planoconta = saldo_por_planoconta + DEPOSITO - PAGAMENTO;
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito +- pagamento;
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO = SALDO + DEPOSITO - PAGAMENTO;
 end
 else
 SALDO = 0;
 END
 
 IF (: DATA >= : PDATA1) THEN
 BEGIN
 IF (INICIO_PLANOCONTA = 'S') THEN
 BEGIN
 INICIO_PLANOCONTA = 'N';
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 TOTAL_GERAL = 0;
 end
 
 SELECT REPLACE (CT.NOME,  '  ', ' ') AS NOME_CONTA
 FROM CONTA CT
 WHERE CT.ID = :ID_CONTA
 INTO : NOME_CONTA;
 SELECT PC.NOME
 FROM PLANODECONTAS PC
 WHERE PC.ID = :ID_PLANCONTA
 INTO : NOME;
 SELECT CC.NOME
 FROM CENTRODECUSTO CC
 WHERE CC.ID = :ID_CCUSTO
 INTO : NOME_CCUSTO;
 SUSPEND;
 END
 END
 END
 | 
 
 Passando o valor aqui
 total_geral_anterior = total_geral;
 
 Mais não deu certo
 _________________
 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: Qua Mar 03, 2021 5:09 pm    Assunto: |   |  
				| 
 |  
				| Experimente a versão abaixo: 
 
  	  | Código: |  	  | IF (INICIO_PLANOCONTA = 'S') THEN BEGIN
 INICIO_PLANOCONTA = 'N';
 TOTAL_GERAL_ANTERIOR = TOTAL_GERAL_ANTERIOR + SALDO;
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 begin
 TOTAL_GERAL_ANTERIOR = 0;
 TOTAL_GERAL = 0;
 end;
 end
 | 
 
 Espero que ajude
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 | 
			
				|  Enviada: Qua Mar 03, 2021 5:32 pm    Assunto: |   |  
				| 
 |  
				|  	  | imex escreveu: |  	  | Experimente a versão abaixo: 
 
  	  | Código: |  	  | IF (INICIO_PLANOCONTA = 'S') THEN BEGIN
 INICIO_PLANOCONTA = 'N';
 TOTAL_GERAL_ANTERIOR = TOTAL_GERAL_ANTERIOR + SALDO;
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 begin
 TOTAL_GERAL_ANTERIOR = 0;
 TOTAL_GERAL = 0;
 end;
 end
 | 
 
 Espero que ajude
 | 
 
 Voce diz assim?
 
  	  | Código: |  	  | create or alter procedure XSP_REL_MOVBALANCETE ( PID_CONTA varchar(1025),
 PDATA1 date,
 PDATA2 date,
 PSTATUS varchar(255),
 PCONDICAO varchar(255),
 PNAOMOSTRARSALDO integer,
 PUSUARIO varchar(100))
 returns (
 ID_CONTA integer,
 NOME_CONTA varchar(100) character set WIN1252 collate WIN_PTBR,
 ID integer,
 DATA date,
 NUMERO varchar(20),
 ID_CLIENTE integer,
 FAVORECIDO varchar(100) character set WIN1252 collate WIN_PTBR,
 ID_PLANCONTA integer,
 NOME varchar(100) character set WIN1252 collate WIN_PTBR,
 HISTORICO varchar(200) character set WIN1252 collate WIN_PTBR,
 SALDO_ANT numeric(15,2),
 DEPOSITO numeric(15,2),
 PAGAMENTO numeric(15,2),
 SALDO numeric(15,2),
 TIPO integer,
 STATUS integer,
 ID_CCUSTO integer,
 NOME_CCUSTO varchar(100) character set WIN1252 collate WIN_PTBR,
 VALOR numeric(15,2),
 NOME_TIPO_RECEITA_DESPESA varchar(100),
 D_C char(1),
 TOTAL_GERAL numeric(15,2),
 SALDO_POR_PLANOCONTA numeric(15,2),
 TOTAL_GERAL_DEBITO numeric(15,2),
 TOTAL_GERAL_CREDITO numeric(15,2),
 TOTAL_GERAL_ANTERIOR numeric(15,2))
 as
 declare variable ID_CONTA_ANT integer;
 declare variable INICIO_PLANOCONTA char(1);
 declare variable VID_PLANCONTA integer;
 declare variable VNOME_TIPO_RECEITA_DESPESA varchar(100);
 BEGIN
 ID_CONTA_ANT = 0;
 total_geral_debito = 0;
 total_geral_credito = 0;
 VID_PLANCONTA = 0;
 vnome_tipo_receita_despesa = '';
 FOR
 SELECT
 MC.ID_CONTA,
 MC.ID,
 MC.DATA,
 MC.NUMERO,
 MC.ID_CLIENTE,
 CASE WHEN MC.FAVORECIDO IS NULL THEN
 C.NOMEFANTASIA
 ELSE
 MC.FAVORECIDO
 END,
 MC.ID_PLANCONTA,
 MC.ID_CCUSTO,
 MC.HISTORICO,
 MC.STATUS,
 MC.TIPO,
 CASE WHEN MC.TIPO IN (0, 3) THEN '< RECEITAS >'
 WHEN MC.TIPO IN (1, 2) THEN '< DESPESAS >'
 END AS NOME_TIPO_RECEITA_DESPESA,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (1, 2) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE -1 END,
 IIF( MC.TIPO IN (1, 2), 'D', 'C')
 FROM MOVCONTA MC
 LEFT JOIN CLIENTE C ON C.ID = MC.ID_CLIENTE
 LEFT JOIN USUARIOCONTAS UC ON UC.CONTA_ID = MC.ID_CONTA
 WHERE POSITION(cast(MC.ID_CONTA as varchar(1025)) || ',', :PID_CONTA) > 0
 AND  MC.DATA <= : PDATA2
 AND ( (UPPER(C.NOMEFANTASIA) LIKE :PCONDICAO) OR
 (UPPER(MC.FAVORECIDO) LIKE :PCONDICAO) )
 AND ((UC.CD_USUARIO LIKE :PUSUARIO) or (UC.cd_usuario IS NULL))
 ORDER BY NOME_TIPO_RECEITA_DESPESA DESC, MC.ID_PLANCONTA, MC.Data, MC.ID
 INTO : ID_CONTA, : ID, : DATA, : NUMERO, : ID_CLIENTE, : FAVORECIDO,
 : ID_PLANCONTA, : ID_CCUSTO, : HISTORICO, : STATUS, : TIPO, : NOME_TIPO_RECEITA_DESPESA,
 : DEPOSITO, : PAGAMENTO, : VALOR, : D_C
 DO BEGIN
 if (nome_tipo_receita_despesa <> vnome_tipo_receita_despesa) then
 BEGIN
 TOTAL_GERAL = 0;
 vnome_tipo_receita_despesa = nome_tipo_receita_despesa;
 END
 if (id_planconta <> vid_planconta) then
 BEGIN
 INICIO_PLANOCONTA = 'S';
 saldo_por_planoconta = 0;
 SALDO = 0;
 vid_planconta = id_planconta;
 END
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO_ANT = SALDO;
 end
 else
 saldo_ant = 0;
 
 --TOTAL_GERAL_ANTERIOR = TOTAL_GERAL;
 
 IF (: STATUS <> 30) THEN
 BEGIN
 if (: data >= : pdata1 ) then
 saldo_por_planoconta = saldo_por_planoconta + DEPOSITO - PAGAMENTO;
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito +- pagamento;
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO = SALDO + DEPOSITO - PAGAMENTO;
 end
 else
 SALDO = 0;
 END
 
 IF (: DATA >= : PDATA1) THEN
 BEGIN
 IF (INICIO_PLANOCONTA = 'S') THEN
 BEGIN
 INICIO_PLANOCONTA = 'N';
 TOTAL_GERAL_ANTERIOR = TOTAL_GERAL_ANTERIOR + SALDO;
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 begin
 TOTAL_GERAL_ANTERIOR = 0;
 TOTAL_GERAL = 0;
 end
 end
 
 SELECT REPLACE (CT.NOME,  '  ', ' ') AS NOME_CONTA
 FROM CONTA CT
 WHERE CT.ID = :ID_CONTA
 INTO : NOME_CONTA;
 SELECT PC.NOME
 FROM PLANODECONTAS PC
 WHERE PC.ID = :ID_PLANCONTA
 INTO : NOME;
 SELECT CC.NOME
 FROM CENTRODECUSTO CC
 WHERE CC.ID = :ID_CCUSTO
 INTO : NOME_CCUSTO;
 SUSPEND;
 END
 END
 END
 | 
 
 Se for ai vem NULL o campo
 _________________
 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
 
 
 | 
			
				|  Enviada: Qua Mar 03, 2021 5:44 pm    Assunto: |   |  
				| 
 |  
				| Faltou inicializar a variavel = 0 
 Mais deu diferença
 
 Tenho nesse campo assim
 113.388,16
 98.268,07
 14.148,68
 225.804,91
 
 Mais ele retornou
 226.642,32
 
 Como esta a SP
 
  	  | Código: |  	  | CREATE OR ALTER procedure XSP_REL_MOVBALANCETE ( PID_CONTA varchar(1025),
 PDATA1 date,
 PDATA2 date,
 PSTATUS varchar(255),
 PCONDICAO varchar(255),
 PNAOMOSTRARSALDO integer,
 PUSUARIO varchar(100))
 returns (
 ID_CONTA integer,
 NOME_CONTA varchar(100) character set WIN1252 collate WIN_PTBR,
 ID integer,
 DATA date,
 NUMERO varchar(20),
 ID_CLIENTE integer,
 FAVORECIDO varchar(100) character set WIN1252 collate WIN_PTBR,
 ID_PLANCONTA integer,
 NOME varchar(100) character set WIN1252 collate WIN_PTBR,
 HISTORICO varchar(200) character set WIN1252 collate WIN_PTBR,
 SALDO_ANT numeric(15,2),
 DEPOSITO numeric(15,2),
 PAGAMENTO numeric(15,2),
 SALDO numeric(15,2),
 TIPO integer,
 STATUS integer,
 ID_CCUSTO integer,
 NOME_CCUSTO varchar(100) character set WIN1252 collate WIN_PTBR,
 VALOR numeric(15,2),
 NOME_TIPO_RECEITA_DESPESA varchar(100),
 D_C char(1),
 TOTAL_GERAL numeric(15,2),
 SALDO_POR_PLANOCONTA numeric(15,2),
 TOTAL_GERAL_DEBITO numeric(15,2),
 TOTAL_GERAL_CREDITO numeric(15,2),
 TOTAL_GERAL_ANTERIOR numeric(15,2))
 as
 declare variable ID_CONTA_ANT integer;
 declare variable INICIO_PLANOCONTA char(1);
 declare variable VID_PLANCONTA integer;
 declare variable VNOME_TIPO_RECEITA_DESPESA varchar(100);
 BEGIN
 ID_CONTA_ANT = 0;
 total_geral_debito = 0;
 total_geral_credito = 0;
 VID_PLANCONTA = 0;
 vnome_tipo_receita_despesa = '';
 FOR
 SELECT
 MC.ID_CONTA,
 MC.ID,
 MC.DATA,
 MC.NUMERO,
 MC.ID_CLIENTE,
 CASE WHEN MC.FAVORECIDO IS NULL THEN
 C.NOMEFANTASIA
 ELSE
 MC.FAVORECIDO
 END,
 MC.ID_PLANCONTA,
 MC.ID_CCUSTO,
 MC.HISTORICO,
 MC.STATUS,
 MC.TIPO,
 CASE WHEN MC.TIPO IN (0, 3) THEN '< RECEITAS >'
 WHEN MC.TIPO IN (1, 2) THEN '< DESPESAS >'
 END AS NOME_TIPO_RECEITA_DESPESA,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (1, 2) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE -1 END,
 IIF( MC.TIPO IN (1, 2), 'D', 'C')
 FROM MOVCONTA MC
 LEFT JOIN CLIENTE C ON C.ID = MC.ID_CLIENTE
 LEFT JOIN USUARIOCONTAS UC ON UC.CONTA_ID = MC.ID_CONTA
 WHERE POSITION(cast(MC.ID_CONTA as varchar(1025)) || ',', :PID_CONTA) > 0
 AND  MC.DATA <= : PDATA2
 AND ( (UPPER(C.NOMEFANTASIA) LIKE :PCONDICAO) OR
 (UPPER(MC.FAVORECIDO) LIKE :PCONDICAO) )
 AND ((UC.CD_USUARIO LIKE :PUSUARIO) or (UC.cd_usuario IS NULL))
 ORDER BY NOME_TIPO_RECEITA_DESPESA DESC, MC.ID_PLANCONTA, MC.Data, MC.ID
 INTO : ID_CONTA, : ID, : DATA, : NUMERO, : ID_CLIENTE, : FAVORECIDO,
 : ID_PLANCONTA, : ID_CCUSTO, : HISTORICO, : STATUS, : TIPO, : NOME_TIPO_RECEITA_DESPESA,
 : DEPOSITO, : PAGAMENTO, : VALOR, : D_C
 DO BEGIN
 
 if (nome_tipo_receita_despesa <> vnome_tipo_receita_despesa) then
 BEGIN
 TOTAL_GERAL = 0;
 TOTAL_GERAL_ANTERIOR = 0;
 vnome_tipo_receita_despesa = nome_tipo_receita_despesa;
 END
 if (id_planconta <> vid_planconta) then
 BEGIN
 INICIO_PLANOCONTA = 'S';
 saldo_por_planoconta = 0;
 SALDO = 0;
 vid_planconta = id_planconta;
 END
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO_ANT = SALDO;
 end
 else
 saldo_ant = 0;
 
 IF (: STATUS <> 30) THEN
 BEGIN
 if (: data >= : pdata1 ) then
 saldo_por_planoconta = saldo_por_planoconta + DEPOSITO - PAGAMENTO;
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito +- pagamento;
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO = SALDO + DEPOSITO - PAGAMENTO;
 end
 else
 SALDO = 0;
 END
 
 IF (: DATA >= : PDATA1) THEN
 BEGIN
 IF (INICIO_PLANOCONTA = 'S') THEN
 BEGIN
 INICIO_PLANOCONTA = 'N';
 TOTAL_GERAL_ANTERIOR = TOTAL_GERAL_ANTERIOR + SALDO;
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 begin
 TOTAL_GERAL_ANTERIOR = 0;
 TOTAL_GERAL = 0;
 end
 end
 
 SELECT REPLACE (CT.NOME,  '  ', ' ') AS NOME_CONTA
 FROM CONTA CT
 WHERE CT.ID = :ID_CONTA
 INTO : NOME_CONTA;
 SELECT PC.NOME
 FROM PLANODECONTAS PC
 WHERE PC.ID = :ID_PLANCONTA
 INTO : NOME;
 SELECT CC.NOME
 FROM CENTRODECUSTO CC
 WHERE CC.ID = :ID_CCUSTO
 INTO : NOME_CCUSTO;
 SUSPEND;
 END
 END
 END
 | 
 _________________
 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
 
 
 | 
			
				|  Enviada: Qua Mar 03, 2021 5:47 pm    Assunto: |   |  
				| 
 |  
				|  	  | adriano_servitec escreveu: |  	  | Faltou inicializar a variavel = 0 
 Mais deu diferença
 
 Tenho nesse campo assim
 113.388,16
 98.268,07
 14.148,68
 225.804,91
 
 Mais ele retornou
 226.642,32
 
 Como esta a SP
 
  	  | Código: |  	  | CREATE OR ALTER procedure XSP_REL_MOVBALANCETE ( PID_CONTA varchar(1025),
 PDATA1 date,
 PDATA2 date,
 PSTATUS varchar(255),
 PCONDICAO varchar(255),
 PNAOMOSTRARSALDO integer,
 PUSUARIO varchar(100))
 returns (
 ID_CONTA integer,
 NOME_CONTA varchar(100) character set WIN1252 collate WIN_PTBR,
 ID integer,
 DATA date,
 NUMERO varchar(20),
 ID_CLIENTE integer,
 FAVORECIDO varchar(100) character set WIN1252 collate WIN_PTBR,
 ID_PLANCONTA integer,
 NOME varchar(100) character set WIN1252 collate WIN_PTBR,
 HISTORICO varchar(200) character set WIN1252 collate WIN_PTBR,
 SALDO_ANT numeric(15,2),
 DEPOSITO numeric(15,2),
 PAGAMENTO numeric(15,2),
 SALDO numeric(15,2),
 TIPO integer,
 STATUS integer,
 ID_CCUSTO integer,
 NOME_CCUSTO varchar(100) character set WIN1252 collate WIN_PTBR,
 VALOR numeric(15,2),
 NOME_TIPO_RECEITA_DESPESA varchar(100),
 D_C char(1),
 TOTAL_GERAL numeric(15,2),
 SALDO_POR_PLANOCONTA numeric(15,2),
 TOTAL_GERAL_DEBITO numeric(15,2),
 TOTAL_GERAL_CREDITO numeric(15,2),
 TOTAL_GERAL_ANTERIOR numeric(15,2))
 as
 declare variable ID_CONTA_ANT integer;
 declare variable INICIO_PLANOCONTA char(1);
 declare variable VID_PLANCONTA integer;
 declare variable VNOME_TIPO_RECEITA_DESPESA varchar(100);
 BEGIN
 ID_CONTA_ANT = 0;
 total_geral_debito = 0;
 total_geral_credito = 0;
 VID_PLANCONTA = 0;
 vnome_tipo_receita_despesa = '';
 FOR
 SELECT
 MC.ID_CONTA,
 MC.ID,
 MC.DATA,
 MC.NUMERO,
 MC.ID_CLIENTE,
 CASE WHEN MC.FAVORECIDO IS NULL THEN
 C.NOMEFANTASIA
 ELSE
 MC.FAVORECIDO
 END,
 MC.ID_PLANCONTA,
 MC.ID_CCUSTO,
 MC.HISTORICO,
 MC.STATUS,
 MC.TIPO,
 CASE WHEN MC.TIPO IN (0, 3) THEN '< RECEITAS >'
 WHEN MC.TIPO IN (1, 2) THEN '< DESPESAS >'
 END AS NOME_TIPO_RECEITA_DESPESA,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (1, 2) THEN 1 ELSE 0 END,
 MC.VALOR * CASE WHEN MC.TIPO IN (0, 3) THEN 1 ELSE -1 END,
 IIF( MC.TIPO IN (1, 2), 'D', 'C')
 FROM MOVCONTA MC
 LEFT JOIN CLIENTE C ON C.ID = MC.ID_CLIENTE
 LEFT JOIN USUARIOCONTAS UC ON UC.CONTA_ID = MC.ID_CONTA
 WHERE POSITION(cast(MC.ID_CONTA as varchar(1025)) || ',', :PID_CONTA) > 0
 AND  MC.DATA <= : PDATA2
 AND ( (UPPER(C.NOMEFANTASIA) LIKE :PCONDICAO) OR
 (UPPER(MC.FAVORECIDO) LIKE :PCONDICAO) )
 AND ((UC.CD_USUARIO LIKE :PUSUARIO) or (UC.cd_usuario IS NULL))
 ORDER BY NOME_TIPO_RECEITA_DESPESA DESC, MC.ID_PLANCONTA, MC.Data, MC.ID
 INTO : ID_CONTA, : ID, : DATA, : NUMERO, : ID_CLIENTE, : FAVORECIDO,
 : ID_PLANCONTA, : ID_CCUSTO, : HISTORICO, : STATUS, : TIPO, : NOME_TIPO_RECEITA_DESPESA,
 : DEPOSITO, : PAGAMENTO, : VALOR, : D_C
 DO BEGIN
 
 if (nome_tipo_receita_despesa <> vnome_tipo_receita_despesa) then
 BEGIN
 TOTAL_GERAL = 0;
 TOTAL_GERAL_ANTERIOR = 0;
 vnome_tipo_receita_despesa = nome_tipo_receita_despesa;
 END
 if (id_planconta <> vid_planconta) then
 BEGIN
 INICIO_PLANOCONTA = 'S';
 saldo_por_planoconta = 0;
 SALDO = 0;
 vid_planconta = id_planconta;
 END
 
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO_ANT = SALDO;
 end
 else
 saldo_ant = 0;
 
 IF (: STATUS <> 30) THEN
 BEGIN
 if (: data >= : pdata1 ) then
 saldo_por_planoconta = saldo_por_planoconta + DEPOSITO - PAGAMENTO;
 total_geral_credito = total_geral_credito + deposito;
 total_geral_debito = total_geral_debito +- pagamento;
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 SALDO = SALDO + DEPOSITO - PAGAMENTO;
 end
 else
 SALDO = 0;
 END
 
 IF (: DATA >= : PDATA1) THEN
 BEGIN
 IF (INICIO_PLANOCONTA = 'S') THEN
 BEGIN
 INICIO_PLANOCONTA = 'N';
 TOTAL_GERAL_ANTERIOR = TOTAL_GERAL_ANTERIOR + SALDO;
 TOTAL_GERAL = TOTAL_GERAL + SALDO;
 END
 ELSE
 begin
 if (:PNAOMOSTRARSALDO = 0) then
 begin
 TOTAL_GERAL = TOTAL_GERAL + DEPOSITO - PAGAMENTO;
 end
 else
 begin
 TOTAL_GERAL_ANTERIOR = 0;
 TOTAL_GERAL = 0;
 end
 end
 
 SELECT REPLACE (CT.NOME,  '  ', ' ') AS NOME_CONTA
 FROM CONTA CT
 WHERE CT.ID = :ID_CONTA
 INTO : NOME_CONTA;
 SELECT PC.NOME
 FROM PLANODECONTAS PC
 WHERE PC.ID = :ID_PLANCONTA
 INTO : NOME;
 SELECT CC.NOME
 FROM CENTRODECUSTO CC
 WHERE CC.ID = :ID_CCUSTO
 INTO : NOME_CCUSTO;
 SUSPEND;
 END
 END
 END
 | 
 | 
 
 Achei o problema Imex
 tem que ser assim
 
  	  | Código: |  	  | TOTAL_GERAL_ANTERIOR = TOTAL_GERAL_ANTERIOR + saldo_ant; | 
 
 Resolvido amigo.
 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 |  |  
		|  |  
		|  |  
  
	| 
 
 | Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido
 Editar Mensagens: Proibido.
 Excluir Mensagens: Proibido.
 Votar em Enquetes: Proibido.
 
 |  |