VARIÁVEIS COM SOMA NO FASTREPORT

29/06/2010

Estou estudando o FastReport e pretendo fazer um relatório do movimento diário do caixa. minha estrutura da tabela :

CREATE TABLE SINCAI (
    NEW_SINCAI           KEY_DOMAIN NOT NULL,
    SEQDIA_CAI           INTEGER,
    DATADIA_CAI          DATE NOT NULL,
    HORADIA_CAI          TIME NOT NULL,
    SALDOINI_CAI         FLOAT DEFAULT 0,
    SALDOFINAL_CAI       FLOAT DEFAULT 0,
    RECHIS_CAI           INTEGER NOT NULL,
    DEBCRE_CAI           VARCHAR(7) NOT NULL,
    VALOR                FLOAT,
    DESCRI_CAI           VARCHAR(100),
    ESPECIE_CAI          VARCHAR(10) NOT NULL,
    KEY_SINFAT1_CAI      INTEGER,
    MESCOM_FAT_CAI       VARCHAR(4),
    ANOCOM_FAT_CAI       VARCHAR(4),
    GARANTIA_CAI         VARCHAR(3),
    KEY_SINOP1_CAI       INTEGER,
    KEY_CAD_OP1_CAI      INTEGER,
    MESCOM_OP1_CAI       VARCHAR(2),
    ANOCOM_OP1_CAI       VARCHAR(4),
    KEY_CODFUN_CAI       INTEGER NOT NULL,
    KEY_FINLAND_CAI      INTEGER,
    KEY_FINLANC_CAI      INTEGER,
    KEY_FINORD_ORDF_CAI  INTEGER,
    VALORANT_CAI         FLOAT
);


o que eu preciso fazer é ao imprimir os dados do relatório, pegar o conteúdo campo DEBCRE_CAI,  verificar
se for débito, somar o valor em uma variável se for crédito, somar o valor em outra variavel, pois
no final do relatório tenho que totalizar o valor do débito e o valor do crédito e o total + o saldo inicial.
tentei fazer direto no  dataset, mas como tenho pesquisa de de datas no dataset antes de imprimir os dados,
não funcionou direito no campo calculado, por isso decidi fazer direto dentro do fastreport.
tentei colocar as variáveis no onbeforeprint da banda master mas não funcionou direito.

atenciosamente.

Jorge Trento
Jorge Trento

Jorge Trento

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

29/06/2010

Olá amigo,

  Infelizmente o suporte não abrange FastReport. Mas podemos resolver seu problema com os ClientDataSet, ou até mesmo no seu Select. O que acha ?

  Se puder mandar a tabela preenchida, fica mais facil testar.

Att,

Wesley Y
GOSTEI 0
Jorge Trento

Jorge Trento

29/06/2010

Desculpe a demora,  segue abaixo tabela com alguns dados:
/******************************************************************************/
/****          Generated by IBExpert 2008.08.08 5/7/2010 15:42:35          ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES ISO8859_1;

SET CLIENTLIB 'C:\Arquivos de programas\Firebird\Firebird_2_0\bin\fbclient.dll';

CREATE DATABASE 'localhost:C:\SISIMO\BDSISIMO\SISLOC.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 16384
DEFAULT CHARACTER SET ISO8859_1;



/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/



CREATE TABLE SINCAI (
    NEW_SINCAI           KEY_DOMAIN NOT NULL,
    SEQDIA_CAI           INTEGER,
    DATADIA_CAI          DATE NOT NULL,
    HORADIA_CAI          TIME NOT NULL,
    SALDOINI_CAI         FLOAT DEFAULT 0,
    SALDOFINAL_CAI       FLOAT DEFAULT 0,
    RECHIS_CAI           INTEGER NOT NULL,
    DEBCRE_CAI           VARCHAR(7) NOT NULL,
    VALOR                FLOAT,
    DESCRI_CAI           VARCHAR(100),
    ESPECIE_CAI          VARCHAR(10) NOT NULL,
    KEY_SINFAT1_CAI      INTEGER,
    MESCOM_FAT_CAI       VARCHAR(4),
    ANOCOM_FAT_CAI       VARCHAR(4),
    GARANTIA_CAI         VARCHAR(3),
    KEY_SINOP1_CAI       INTEGER,
    KEY_CAD_OP1_CAI      INTEGER,
    MESCOM_OP1_CAI       VARCHAR(2),
    ANOCOM_OP1_CAI       VARCHAR(4),
    KEY_CODFUN_CAI       INTEGER NOT NULL,
    KEY_FINLAND_CAI      INTEGER,
    KEY_FINLANC_CAI      INTEGER,
    KEY_FINORD_ORDF_CAI  INTEGER,
    VALORANT_CAI         FLOAT
);


INSERT INTO SINCAI (NEW_SINCAI, SEQDIA_CAI, DATADIA_CAI, HORADIA_CAI, SALDOINI_CAI, SALDOFINAL_CAI, RECHIS_CAI, DEBCRE_CAI, VALOR, DESCRI_CAI, ESPECIE_CAI, KEY_SINFAT1_CAI, MESCOM_FAT_CAI, ANOCOM_FAT_CAI, GARANTIA_CAI, KEY_SINOP1_CAI, KEY_CAD_OP1_CAI, MESCOM_OP1_CAI, ANOCOM_OP1_CAI, KEY_CODFUN_CAI, KEY_FINLAND_CAI, KEY_FINLANC_CAI, KEY_FINORD_ORDF_CAI, VALORANT_CAI) VALUES (1, 0, '2010-06-21', '16:45:38.000', 100, 200, 29, 'CREDITO', 100, 'Lançamento de Encerramento de Caixa', 'Dinheiro', 0, '', '', '', 0, 0, '', '', 0, 0, 0, 0, 0);
INSERT INTO SINCAI (NEW_SINCAI, SEQDIA_CAI, DATADIA_CAI, HORADIA_CAI, SALDOINI_CAI, SALDOFINAL_CAI, RECHIS_CAI, DEBCRE_CAI, VALOR, DESCRI_CAI, ESPECIE_CAI, KEY_SINFAT1_CAI, MESCOM_FAT_CAI, ANOCOM_FAT_CAI, GARANTIA_CAI, KEY_SINOP1_CAI, KEY_CAD_OP1_CAI, MESCOM_OP1_CAI, ANOCOM_OP1_CAI, KEY_CODFUN_CAI, KEY_FINLAND_CAI, KEY_FINLANC_CAI, KEY_FINORD_ORDF_CAI, VALORANT_CAI) VALUES (2, 0, '2010-06-21', '16:45:50.000', 200, 300, 18, 'CREDITO', 100, 'Lançamento de Abertura  de Caixa', 'Dinheiro', 0, '', '', '', 0, 0, '', '', 0, 0, 0, 0, 0);
INSERT INTO SINCAI (NEW_SINCAI, SEQDIA_CAI, DATADIA_CAI, HORADIA_CAI, SALDOINI_CAI, SALDOFINAL_CAI, RECHIS_CAI, DEBCRE_CAI, VALOR, DESCRI_CAI, ESPECIE_CAI, KEY_SINFAT1_CAI, MESCOM_FAT_CAI, ANOCOM_FAT_CAI, GARANTIA_CAI, KEY_SINOP1_CAI, KEY_CAD_OP1_CAI, MESCOM_OP1_CAI, ANOCOM_OP1_CAI, KEY_CODFUN_CAI, KEY_FINLAND_CAI, KEY_FINLANC_CAI, KEY_FINORD_ORDF_CAI, VALORANT_CAI) VALUES (3, 0, '2010-06-21', '16:45:53.000', 300, 150, 18, 'DEBITO', 150, 'Crédito', 'Dinheiro', 0, '', '', '', 0, 0, '', '', 0, 0, 0, 0, 0);
INSERT INTO SINCAI (NEW_SINCAI, SEQDIA_CAI, DATADIA_CAI, HORADIA_CAI, SALDOINI_CAI, SALDOFINAL_CAI, RECHIS_CAI, DEBCRE_CAI, VALOR, DESCRI_CAI, ESPECIE_CAI, KEY_SINFAT1_CAI, MESCOM_FAT_CAI, ANOCOM_FAT_CAI, GARANTIA_CAI, KEY_SINOP1_CAI, KEY_CAD_OP1_CAI, MESCOM_OP1_CAI, ANOCOM_OP1_CAI, KEY_CODFUN_CAI, KEY_FINLAND_CAI, KEY_FINLANC_CAI, KEY_FINORD_ORDF_CAI, VALORANT_CAI) VALUES (4, 0, '2010-06-21', '10:18:02.000', 250, 250, 2, 'CREDITO', 100, 'dqdqf', 'DINHEIRO', 0, '', '', '', 0, 0, '', '', 21, 0, 0, 0, 0);

COMMIT WORK;



/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/

ALTER TABLE SINCAI ADD CONSTRAINT PK_SINCAI PRIMARY KEY (NEW_SINCAI);


/* Fields descriptions */

DESCRIBE FIELD SEQDIA_CAI TABLE SINCAI
'TENTAR FAZER UM sequence (SE PRECISAR) NÃO AGORA';

DESCRIBE FIELD DATADIA_CAI TABLE SINCAI
'RECEBE A DATA DA MAQUINA (DATA DO DIA)';

DESCRIBE FIELD HORADIA_CAI TABLE SINCAI
'HORA DA AUTENTICAÇÃO';

DESCRIBE FIELD SALDOFINAL_CAI TABLE SINCAI
'SALDO FINAL DO CAIXA';

DESCRIBE FIELD RECHIS_CAI TABLE SINCAI
'CHAVE PRIMARIA DO SINHIS';

DESCRIBE FIELD DEBCRE_CAI TABLE SINCAI
'SE É DEBITO OU CRÉDITO PARA USAR NA GRAVAÇÃO DO LANÇAMENTO  -DBCOMBOBOX DÉBITO OU CREDITO';

DESCRIBE FIELD VALOR TABLE SINCAI
'VALOR DO LANÇAMENTO';

DESCRIBE FIELD DESCRI_CAI TABLE SINCAI
' complemento do historico';

DESCRIBE FIELD ESPECIE_CAI TABLE SINCAI
'DINHEIRO, CHEQUE, VALE, OUTROS   -';

DESCRIBE FIELD KEY_SINFAT1_CAI TABLE SINCAI
'PEGAR DO SINFAT1 O KEY_SINFAT1';

DESCRIBE FIELD GARANTIA_CAI TABLE SINCAI
'SE FATURA É GARANTIDO SIM OU NÃO';

DESCRIBE FIELD KEY_SINOP1_CAI TABLE SINCAI
'VEM DA TABELA SINOP1 - PEGAR A CHAVE KEY_SINOP1';

DESCRIBE FIELD KEY_CAD_OP1_CAI TABLE SINCAI
'CHAVE PRIMARIA DO CADASTRO GERAL PEGAR DA SINOP1 KEY_CAD_OP1';

DESCRIBE FIELD MESCOM_OP1_CAI TABLE SINCAI
'PEGAR DA SINOP1 CAMPO MESCOM_OP1';

DESCRIBE FIELD ANOCOM_OP1_CAI TABLE SINCAI
'PEGAR DA SINOP1 CAMPO ANOCOM_OP1';

DESCRIBE FIELD KEY_CODFUN_CAI TABLE SINCAI
'PEGAR DO SINFUNC KEY_CODFUN - SOLICITAR A CADA LANÇAMENTO NOME SENHA E AREA E TESTAR';

DESCRIBE FIELD KEY_FINLAND_CAI TABLE SINCAI
'CHAVE DO FINLAND KEY_FINLAND SERA USADO PELO PROGRAMA FINLAND  PARA REGISTRAR
A BAIXA E SAIDA DO CAIXA  SERA ALIMENTADO PELO PROGRAMA DE BAIXA DO FINLAND E FINLAN';

DESCRIBE FIELD KEY_FINLANC_CAI TABLE SINCAI
'CHAVE DO FINLAND KEY_FINLAND SERA USADO PELO PROGRAMA FINLAND  PARA REGISTRAR
A BAIXA E ENTRADA NO CAIXA  SERA ALIMENTADO PELO PROGRAMA DE BAIXA DO FINLAND E FINLANC';

DESCRIBE FIELD KEY_FINORD_ORDF_CAI TABLE SINCAI
'SERA ALIMENTADO PELO PROGRAMA  DE BAIXA DO FINORDF TABELA FINORDF A CHAVE KEY_FINORD_ORDF';


repetindo o que preciso é fazer a soma do saldo total,  somar todos os débitos e todos os créditos.

Atenciosaente.

Jorge
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

29/06/2010

Olá amigo,


Desculpe a demora, mas segue abaixo uma solução que acredito que resolva seu problema, fiz na aplicação usando o ClientDataSet.

V eja que crie uma procedure Executar, com dois parametros de saida. :

procedure TForm2.Button1Click(Sender: TObject);
Var
  Deb, Cre : Currency;

begin
  Executar(Deb,Cre);
  ShowMessage('Debito ' + CurrToStr(Deb) + #13 +
              'Credito ' + CurrToStr(Cre)  );
end;

procedure TForm2.Executar(out Deb, Cre : Currency);
Var
  xDeb, xCre : Currency;
begin
  xDeb := 0;
  xCre := 0;
  while not CDS.Eof do
  begin
    if CDS.FieldByName('DEBCRE_CAI').AsString = 'DEBITO' then
       xDeb := xDeb + CDS.FieldByName('VALOR').AsCurrency
    else
       if CDS.FieldByName('DEBCRE_CAI').AsString = 'CREDITO' then
          xCre := xCre + CDS.FieldByName('VALOR').AsCurrency;

    CDS.Next;
  end;
  Deb := xDeb;
  Cre := xCre;

end;


A idéia seria você criar no teu relatórios parâmetros, e passar estes valores para dentro do relatório, sacou a idéia ?

Qualquer coisa agente tenta de outra forma senão lhe atender.


att,

Wesley Y
GOSTEI 0
Jorge Trento

Jorge Trento

29/06/2010

Amigo, Já resolvi o meu problema pode encerrar os trabalho, pois tinha  muita urgência e acabei achando uma maneira direto dentro do Fast Report

Att.
Jorge

GOSTEI 0
Wesley Yamazack

Wesley Yamazack

29/06/2010

ok então,


Att,

Wesley Y
GOSTEI 0
POSTAR