GARANTIR DESCONTO

Fórum Relatorio usando Rave (Multiplos Detail) #376410

27/04/2010

0

Bom Dia   Eu abri um chamado com o nome "Relatorio usando Rave", onde eu precisava fazer um relatorio master detail, onde eu tinha um relatorio com o contrato e suas respectivas faturas, bom esse chamado foi atendido perfeitamente e consegui resolver.   Agora tenho um relatorio onde tenho mais de um detail, assim, o contrato do inquilino, com seus fiadores e as faturas q o contrato tem. Para meu cliente efetuar as cobrancas.   Tambem tenho um relatorio onde eu tenho um master e 6 details, que seria a subdivisao dos lancamentos.   Tentei de toda forma mas nao consegui fazer esse relatorio. Podem me ajudar?
Jorge Trento

Jorge Trento

Responder

Posts

27/04/2010

Wesley Yamazack

Olá amigo,

 Seguindo aquela ideia que lhe passei na video, inclua quantos Band você tiver que agrupar, e configure o mesmo igual ao fornecedor. Veja o exemplo que eu tenho

Terei band Funcionario(group key Codfuncionario) / cliente(group key Codcliente) / venda(group key Codvenda)
Terei databande Itemvenda(detailkey = codvenda) esta é a unica diferença

FuncionarioA
  Cliente1
    Venda1
      ItemVenda1
      ItemVenda2
      ItemVenda3
      ItemVenda4
      ItemVenda5

=======================================
FuncionarioB
  Cliente2
    Venda2
      ItemVenda1
      ItemVenda2
      ItemVenda3
      ItemVenda4
      ItemVenda5
=======================================
FuncionarioC
  Cliente3
    Venda3
      ItemVenda1
      ItemVenda2
      ItemVenda3
      ItemVenda4
      ItemVenda5

Agora você tem que preparar o teu script SQL , observe como fiz o meu.

SELECT C.IDCLIENTE CODCLIENTE, C.DESCRICAO DESCCLIENTE,
F.IDFUNCIONARIO CODFUNCIONARIO, F.DESCRICAO DESCFUNCIONARIO,
P.IDPRODUTO CODPRODUTO, P.DESCRICAO DESCPRODUTO,
V.IDVENDA, V.DATA, V.TOTAL,
VI.IDVENDAITEM, VI.QUANTIDADE, VI.VALOR
FROM CLIENTE C, FUNCIONARIO F, VENDA V, VENDAITEM VI, PRODUTO P
WHERE V.IDVENDA = VI.IDVENDA
AND V.IDFUNCIONARIO = F.IDFUNCIONARIO
AND V.IDCLIENTE = C.IDCLIENTE
AND P.IDPRODUTO = VI.IDPRODUTO
ORDER BY F.IDFUNCIONARIO, C.IDCLIENTE, V.IDVENDA, VI.IDVENDAITEM

Até aqui tranquilo certo ? Faça esta aplicação e veja se irá funcionar, qualquer coisa estamos aqui pra ajudar, se precisar me avisa que eu gravo uma vídeo pra ti.

Att,

Wesley Y


Responder

Gostei + 0

28/04/2010

Jorge Trento

Bom Dia   Se eu fosse colocar tudo em um sql só ficaria assim a estrutura do resultado, cada contrato seria repetido em todos os fiadores e cada linha dessa seria repedido para cada fatura.   Eu 'nao estou ocnseguindo colocar os databands em ordem para q ele estruture certo, estou te mandando a estrutura do sql no Query Builder do IB Expert e como ficaria a estrutura do relatorio no rave report   http://video.devmedia.com.br/discovirtual/151708/Estrutura report-2.zip   a ideia é essa q esta em anexo, se puder me ajudar, ou como voce falou gravar um video agradeceria
Responder

Gostei + 0

28/04/2010

Wesley Yamazack

Olá amigo, bom dia.
 Para mudar a ordem das bands, você tem que clicar com o botão direito em cima da banda desejada e ir em
 Order / Move.... Assim você irá consegui mudar a posição delas.
  Quando a repetição é isso mesmo,  veja como fica o meu resultset.

Desccliente Codfuncionario Descfuncionario CodProduto DescProduto idvenda data total idvendaitem MARCOS DA SILVA 1 JEFFERSON 1 PRODUTO 1 1 2010-01-01 100 1 MARCOS DA SILVA 1 JEFFERSON 2 PRODUTO 2 1 2010-01-01 100 2 WESLEY 1 JEFFERSON 1 PRODUTO 1 3 2010-01-01 200 3 WESLEY 1 JEFFERSON 2 PRODUTO 2 3 2010-01-01 200 4 WESLEY 1 JEFFERSON 3 PRODUTO 3 3 2010-01-01 200 5 WESLEY 1 JEFFERSON 4 PRODUTO 4 4 2010-01-02 32 6 WESLEY 1 JEFFERSON 5 PRODUTO 5 4 2010-01-02 32 7 WESLEY 1 JEFFERSON 6 PRODUTO 6 4 2010-01-02 32 8 WESLEY 1 JEFFERSON 3 PRODUTO 3 5 2010-01-02 3 9 WESLEY 1 JEFFERSON 2 PRODUTO 2 5 2010-01-02 3 10

Sacou a ideia ? Quebrar cada tabela sua em uma banda.

Um abraço

Wesley Y
Responder

Gostei + 0

28/04/2010

Jorge Trento

Bom Dia Creio que nao estamos nos entendendo, a estrutura que eu preciso prove isso, dois details. O sql que estou usando esta abaixo para melhor entendimento.
Segue no link abaixo o arquivo de rave que estou usando para o teste, para entendimento do que fiz, da uma verificada ve se é isso:
http://video.devmedia.com.br/discovirtual/151708/relfaturaAtraso.zip     Tenho um inquilino em um imovel, ele tem varios fiadores e varias faturas, tudo isso regido por um contrato INQUILINO 1
    FIADOR 1
    FIADOR 2
    FIADOR 3
         IMOVEL 1
             FATURA 1
             FATURA 2
             FATURA 3
===========================
INQUILINO 2
       FIADOR 1
       FIADOR 2
        IMOVEL 2
            FATURA 1
            FATURA 2   Legenda: Keyinq, nomeinq = inquilino keyfia, nomefia = fiador sincon = contato sinimo = imovel sinfat1 = fatura
   
select (sincad.key_cad) as keyfia, (sincad.nome_cad) as nomefia,
(sincad.ddcom_cad || sincad.fonecom_cad) as fonecomfia,
(sincad.dddres_cad || sincad.foneres_cad) as foneresfia,
(sincad1.key_cad) as keyinq, (sincad1.nome_cad) as nomeinq,
(sincad1.ddcom_cad || sincad1.fonecom_cad) as fonecominq,
(sincad1.dddres_cad || sincad1.foneres_cad) as foneresinq,
sinimo.key_seq_imo, sinimo.endere_imo, sinimo.biarro_imo,
sincon.key_sincon, sinfat1.key_sinfat, sinfat1.mescom_fat,
sinfat1.anocom_fat, sinfat1.vencin_fat, sinfat1.total_fat,
(sinfat1.mescom_fat || sinfat1.anocom_fat) as competencia,
sinfat1.vlrmulta_fat, sinfat1.totcmulta_fat, sinfat1.keyloc_fat
from sinimo inner join sincon on (sinimo.key_seq_imo = sincon.key_seq_imo_con)
inner join sinfat1 on (sincon.key_sincon = sinfat1.key_sincon_fat)
inner join sinfia on (sincon.key_sincon = sinfia.key_fia_sincon)
inner join sincad on (sinfia.key_fia_sincad = sincad.key_cad)
inner join sincad sincad1 on (sincon.key_cad_con = sincad1.key_cad)
order by sincon.key_sincon
Responder

Gostei + 0

29/04/2010

Wesley Yamazack

Olá amigo, me de um tempo para poder preparar e entender melhor seu problema ok ? Vou gravar uma video para ti.

Att,

Wesley Y
Responder

Gostei + 0

30/04/2010

Wesley Yamazack

Olá amigo,

  Estou aqui montando um BD para poder fazer um exemplo igual ao seu, porém estou querendo confirmar se a estrutura base das suas tabelas estão corretas, veja :

FATURA
FIADOR IDFATURA
IDFIADOR DESCRICAO
DESCRICAO IDIMOVEL




INQUILINO
IMOVEL IDINQUILO
IDIMOVEL NOME
DESCRICAO IDFIADOR
IDFIADOR
Confirme isso por favor

Um abraço

Wesley Y
Responder

Gostei + 0

30/04/2010

Jorge Trento

Bom Dia Segue o metadata logo abaixo com o sql do banco assim ficara mais facil e tambm vai junto a descricao de cada campo:     /******************************************************************************/
/****         Generated by IBExpert 2008.08.08 30/4/2010 11:41:49          ****/
/******************************************************************************/ SET SQL DIALECT 3; SET NAMES ISO8859_1; SET CLIENTLIB 'C:\SISIMO\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 SINCAD (
    KEY_CAD         KEY_DOMAIN NOT NULL,
    NOME_CAD        VARCHAR(50) NOT NULL,
    DATNAS_CAD      DATE,
    SEXO_CAD        CHAR(1),
    CLASE_CAD       CHAR(1) NOT NULL,
    CNPJ_CAD        VARCHAR(18),
    CPF_CAD         VARCHAR(15),
    RG_CAD          VARCHAR(14),
    KEYPROF_CAD     INTEGER NOT NULL,
    EDIFCOM_CAD     VARCHAR(30),
    EMPRES_CAD      VARCHAR(50),
    ENDCOM_CAD      VARCHAR(50),
    BAICOM_CAD      VARCHAR(30),
    CIDCOM_CAD      VARCHAR(30),
    UFCOM_CAD       CHAR(2),
    CAICOM_CAD      CHAR(5),
    CEPCOM_CAD      CHAR(8),
    OBSCOM_CAD      INTEGER,
    DDCOM_CAD       VARCHAR(4),
    FONECOM_CAD     VARCHAR(8),
    RAMCOM_CAD      VARCHAR(8),
    DDDFAXCOM_CAD   CHAR(4),
    FONEFAXCOM_CAD  VARCHAR(8),
    EDIFRES_CAD     VARCHAR(30),
    ENDRES_CAD      VARCHAR(50),
    BAIRRES_CAD     VARCHAR(30),
    CIDRES_CAD      VARCHAR(30),
    UFRES_CAD       CHAR(2),
    CEPRES_CAD      CHAR(8),
    CAIRES_CAD      CHAR(5),
    OBSRES_CAD      INTEGER,
    DDDRES_CAD      CHAR(4),
    FONERES_CAD     CHAR(8)
);
CREATE TABLE SINCON (
    KEY_SINCON           KEY_DOMAIN NOT NULL,
    KEY_SEQ_IMO_CON      INTEGER NOT NULL,
    KEY_CAD_CON          INTEGER NOT NULL
);
CREATE TABLE SINFAT1 (
    KEY_SINFAT           KEY_DOMAIN NOT NULL,
    TIPREG_FAT           CHAR(1) NOT NULL,
    ANOCOM_FAT           CHAR(4) NOT NULL,
    MESCOM_FAT           CHAR(2) NOT NULL,
    KEY_SINCON_FAT       INTEGER NOT NULL,
    VENCIN_FAT           DATE NOT NULL,
    TOTAL_FAT            FLOAT,
    PERCMULTA_FAT        FLOAT,
    VLRMULTA_FAT         FLOAT,
    TOTCMULTA_FAT        FLOAT
);
CREATE TABLE SINFIA (
    KEY_FIA_SINCON  INTEGER NOT NULL,
    KEY_FIA_SINCAD  INTEGER NOT NULL,
    CAUCAO_FIA      FLOAT,
    BANCO_FIA       INTEGER
);
CREATE TABLE SINIMO (
    KEY_SEQ_IMO     KEY_DOMAIN NOT NULL,
    KEY_CAD_IMO     KEY_DOMAIN NOT NULL,
    KEY_SINSUB      KEY_DOMAIN,
    SITUAC_IMO      CHAR(1) NOT NULL,
    NOME_IMO        VARCHAR(50),
    KEY_CON_IMO     KEY_DOMAIN,
    ENDERE_IMO      VARCHAR(50) NOT NULL,
    BIARRO_IMO      VARCHAR(50) NOT NULL
);  
/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/ ALTER TABLE SINCAD ADD CONSTRAINT PK_SINCAD PRIMARY KEY (KEY_CAD);
ALTER TABLE SINCON ADD CONSTRAINT PK_SINCON PRIMARY KEY (KEY_SINCON);
ALTER TABLE SINFAT1 ADD CONSTRAINT PK_SINFAT1 PRIMARY KEY (KEY_SINFAT);
ALTER TABLE SINFIA ADD CONSTRAINT PK_SINFIA PRIMARY KEY (KEY_FIA_SINCON, KEY_FIA_SINCAD);
ALTER TABLE SINIMO ADD CONSTRAINT PK_SINIMO PRIMARY KEY (KEY_SEQ_IMO);
/******************************************************************************/
/****                             Foreign Keys                             ****/
/******************************************************************************/ ALTER TABLE SINCON ADD CONSTRAINT FK_SINCON_1 FOREIGN KEY (KEY_SEQ_IMO_CON) REFERENCES SINIMO (KEY_SEQ_IMO);
/* Fields descriptions */ DESCRIBE FIELD NOME_CAD TABLE SINCAD
'Nome da Pessoa a Ser CAdastrada'; DESCRIBE FIELD SEXO_CAD TABLE SINCAD
'ACEITAR SOMENTE M OU F  (Não)'; DESCRIBE FIELD CLASE_CAD TABLE SINCAD
'Esste campo pode aceitar somente F ou J'; DESCRIBE FIELD KEYPROF_CAD TABLE SINCAD
'Vem a chave do Cadastro de Profissões e SubProfissões'; DESCRIBE FIELD EDIFCOM_CAD TABLE SINCAD
'Edifício do endereço comercial'; DESCRIBE FIELD EMPRES_CAD TABLE SINCAD
'Empresa Onde Trabalha'; DESCRIBE FIELD ENDCOM_CAD TABLE SINCAD
'Endereço da Empresa onde trabalha'; DESCRIBE FIELD CAICOM_CAD TABLE SINCAD
'Caixa Postal'; DESCRIBE FIELD OBSCOM_CAD TABLE SINCAD
'Ovservação do Correio'; DESCRIBE FIELD RAMCOM_CAD TABLE SINCAD
'Ramal de telefone comercial'; DESCRIBE FIELD EDIFRES_CAD TABLE SINCAD
'Edifício do endereço residecial'; DESCRIBE FIELD CAIRES_CAD TABLE SINCAD
'Caixa postal da residencia do fulano'; DESCRIBE FIELD KEY_SEQ_IMO_CON TABLE SINCON
'  cHAVE DO CÓDIGO DO IMÓVEL'; DESCRIBE FIELD KEY_CAD_CON TABLE SINCON
' CHAVE DO INQUILINO PEGA NO CADASTRO SINCAD (SEQUENCIAL)'; DESCRIBE FIELD KEY_SINFAT TABLE SINFAT1
'CHAVE SEQUENCIAL - ARQUIVO CABECALHO DAS FATURAS BOLETOS DE ALUGUEL'; DESCRIBE FIELD TIPREG_FAT TABLE SINFAT1
' TIPO DE REGISTRO   1= FATURA MES 2 = FATURA FINAL'; DESCRIBE FIELD KEY_SINCON_FAT TABLE SINFAT1
'CHAVE PRIMARIA DO SINCON   - PREVER UMA CHAVE PARA FATURA SEM ALUGUEL'; DESCRIBE FIELD VENCIN_FAT TABLE SINFAT1
'VENCIMENTO SERÁ O CAMPO DIAVCT_INQ_CON  DA TABELA SINCON + O MESCOM_FAT +1 E O ANO ANOCOM_FAT'; DESCRIBE FIELD TOTAL_FAT TABLE SINFAT1
'TOTAL GERAL DA FATURA'; DESCRIBE FIELD PERCMULTA_FAT TABLE SINFAT1
'O CAMPO MULTA FAT SERÁ O CAMPO PERCMULTA_TAB DA SINTAB'; DESCRIBE FIELD VLRMULTA_FAT TABLE SINFAT1
'VLRMULTA_TAB = TOTAL_FAT * PERCMULTA_FAT'; DESCRIBE FIELD TOTCMULTA_FAT TABLE SINFAT1
'É IGUAL  O TOTAL_FAT + VLRMULTA_FAT'; DESCRIBE FIELD KEY_SEQ_IMO TABLE SINIMO
'  SEQUENCIA DA CHAVE DO IMÓVEL'; DESCRIBE FIELD KEY_CAD_IMO TABLE SINIMO
' CHAVE DO CADASTRO GERAL      IDENTIFICA O PROPRIETARIO'; DESCRIBE FIELD KEY_SINSUB TABLE SINIMO
'  CHAMA CHAVE DO CADASTRO DE SUB GRUPO DE IMOVEIS - CHAVE ESTRANGEIRA'; DESCRIBE FIELD SITUAC_IMO TABLE SINIMO
'SITUAÇÃO DO IMÓVEL PODE ASSUMIR 1 - OCUPADO 2 = VAGO 3 = INATIVO  9 excluido'; DESCRIBE FIELD KEY_CON_IMO TABLE SINIMO
'  CHAVE DO CONTRATO QUE ESTA ATIVO NO IMÓVEL';
Responder

Gostei + 0

30/04/2010

Wesley Yamazack

Olá amigo,
  Assim já ajuda, porém fica complicado ter que cadastrar os dados, assim vou perder mais tempo para montar o relatório, você não pode mandar o BD completo, ou o insert de alguns dados, que eu possa fazer o teu Select aparecer, registros e assim montar o relatório ?

Ficaria muito mais prático

Att,

Wesley Y
Responder

Gostei + 0

04/05/2010

Wesley Yamazack

Olá amigo, teria como mandar o Banco de Dados ? Que dai eu ja faria um exemplo correto em cima da tua base de dados.

Att,

Wesley Y
Responder

Gostei + 0

07/05/2010

Wesley Yamazack

Olá amigo, estou ainda no aguardo do banco de dados, como você não mandou ainda, estou analisando aqui e gostaria de lhe acrescentar uma explicação.

Você me passou isso :

INQUILINO 1 BAND1 - AGRUPADO POR INQUILINO
    FIADOR 1 BAND2 - AGRUPADO POR FIADOR
    FIADOR 2 BAND2 - AGRUPADO POR FIADOR
    FIADOR 3 BAND2 - AGRUPADO POR FIADOR
         IMOVEL 1 BAND3 - AGRUPADO POR IMÓVEL
             FATURA 1 - DATABAND
             FATURA 2 - DATABAND
             FATURA 3 - DATABAND
===========================
INQUILINO 2 BAND1 - AGRUPADO POR INQUILINO
    FIADOR 1 BAND2 - AGRUPADO POR FIADOR
    FIADOR 2 BAND2 - AGRUPADO POR FIADOR
    FIADOR 3 BAND2 - AGRUPADO POR FIADOR
         IMOVEL 10 BAND3 - AGRUPADO POR IMÓVEL
             FATURA 21 - DATABAND
             FATURA 22 - DATABAND
             FATURA 23 - DATABAND

A única coisa que você tem que fazer no seu select, que irá repetir diversas informações para todas as faturas que você tiver, porém com o agrupamento não tem problema, você tem que usar o order by inquilino, fiador, imovel, fatura, justamente nesta ordem, pois se no select tiver um fiador 1 para o inquilino 1, na primeira posição e na última posição tiver esta mesma sequencia o relatório irá exibir os dados separadamente. ok ?

Um abraço

Wesley Y

Responder

Gostei + 0

07/05/2010

Wesley Yamazack

Olá amigo, estou ainda no aguardo do banco de dados, como você não mandou ainda, estou analisando aqui e gostaria de lhe acrescentar uma explicação. Você me passou isso:   INQUILINO 1 BAND1 - AGRUPADO POR INQUILINO      FIADOR 1 BAND2 - AGRUPADO POR FIADOR      FIADOR 2 BAND2 - AGRUPADO POR FIADOR      FIADOR 3 BAND2 - AGRUPADO POR FIADOR           IMOVEL 1 BAND3 - AGRUPADO POR IMÓVEL                FATURA 1 - DATABAND                FATURA 2 - DATABAND                FATURA 3 – DATABAND  =========================== INQUILINO 2 BAND1 - AGRUPADO POR INQUILINO      FIADOR 1 BAND2 - AGRUPADO POR FIADOR      FIADOR 2 BAND2 - AGRUPADO POR FIADOR      FIADOR 3 BAND2 - AGRUPADO POR FIADOR           IMOVEL 10 BAND3 - AGRUPADO POR IMÓVEL                FATURA 21 - DATABAND                FATURA 22 - DATABAND                FATURA 23 - DATABAND   A única coisa que você tem que fazer no seu select, que irá repetir diversas informações para todas as faturas que você tiver, porém com o agrupamento não tem problema, você tem que usar o order by inquilino, fiador, imovel, fatura, justamente nesta ordem, pois se no select tiver um fiador 1 para o inquilino 1, na primeira posição e na última posição tiver esta mesma sequencia o relatório irá exibir os dados separadamente. ok ? Um abraço
Wesley Y
Responder

Gostei + 0

07/05/2010

Wesley Yamazack

Olá amigo, estou ainda no aguardo do banco de dados, como você não mandou ainda, estou analisando aqui e gostaria de lhe acrescentar uma explicação. Você me passou isso:   INQUILINO 1 BAND1 - AGRUPADO POR INQUILINO      FIADOR 1 BAND2 - AGRUPADO POR FIADOR      FIADOR 2 BAND2 - AGRUPADO POR FIADOR      FIADOR 3 BAND2 - AGRUPADO POR FIADOR           IMOVEL 1 BAND3 - AGRUPADO POR IMÓVEL                FATURA 1 - DATABAND                FATURA 2 - DATABAND                FATURA 3 – DATABAND  =========================== INQUILINO 2 BAND1 - AGRUPADO POR INQUILINO      FIADOR 1 BAND2 - AGRUPADO POR FIADOR      FIADOR 2 BAND2 - AGRUPADO POR FIADOR      FIADOR 3 BAND2 - AGRUPADO POR FIADOR           IMOVEL 10 BAND3 - AGRUPADO POR IMÓVEL                FATURA 21 - DATABAND                FATURA 22 - DATABAND                FATURA 23 - DATABAND   A única coisa que você tem que fazer no seu select, que irá repetir diversas informações para todas as faturas que você tiver, porém com o agrupamento não tem problema, você tem que usar o order by inquilino, fiador, imovel, fatura, justamente nesta ordem, pois se no select tiver um fiador 1 para o inquilino 1, na primeira posição e na última posição tiver esta mesma sequencia o relatório irá exibir os dados separadamente. ok ? Um abraço
Wesley Y
Responder

Gostei + 0

09/05/2010

Jorge Trento

Boa Noite Desculpe pela demora, é que foi uma correria os ultimos dias. Assim para o sistema eu esta usando Rave e meu colega Quick profissional, mas estavamos tento muitos problemas. Entao após uma reuniao decidimos mudar a ferramenta de relatorio. Estamos usando Fast report. Com alguns cliques consegui fazer esse relatorio, uma coisa que parecia tao dificil, com 20 minutos deixei pronto.   Obrigado, desculpe pelo encomodo e pode encerrar o chamado
Responder

Gostei + 0

10/05/2010

Wesley Yamazack

Ok então amigo,

Att,

Wesley Y
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar