Jump to content
Fórum Script Brasil
  • 0

(Resolvido) rave- trabalhar com dois datasets na mesma banda


etspaz

Question

bom dia pessoal, eu tenho um relatorio no rave que exibe o total de vendas por tipo de produto, num determinado periodo.

a propriedade dataview de um band esta apontando para um direct view que esta ligado ao dataset no delphi que traz estas informações.

mas, agora preciso exibir no mesmo band o total de itens devolvidos e valor total de devoluções para os mesmos tipos de produtos, tem um dataset que traz estas informações no delphi, mas no rave não consigo exibir todos os dados deste segundo, porque a banda aponta só para o primeiro dataset.

aí fica + ou - assim.

total vendas por familia: total de devoluções por familia:

acessório: R$ 12.000,00 R$ 56,00

consumo: R$ 21.000,00 R$ 56,00

odonto: R$ 5.580,25 R$ 56,00

observem q o primeiro beleza, mas no total de devoluções só exibe o primeiro registro e quantos forem os registros do total de vendas o total de devoluções se repete.

tentei fazer um select q me desse todos os dados q preciso, assim era só apontar no rave, mas como ainda to aprendendo sql (na verdade sou iniciante em tudo delphi, rave, sql... mas to caminhando), a consulta traz uns resultados estranhos.

se tiver alguma forma de fazer o rave trabalhar com os dois datasets adiantaria bem o meu lado, porque no mesmo relatorio tem outras bandas na mesma situação, é uma especie de mapa diario de todas as atividades.

pensei se tivesse como fazer um loockup entre os datasets no rave, resolveria.

caso alguém ache q é mais facil resolver na query, vou colocar as querys do total de venda e devolução:

--total de devolução nas vendas avista por familia

select

f.descricao,

sum(DI.qtde )qtd_total,

sum(devolucao_item_venda.qtde * itemvenda.vl_unitario) valor

from

DEVOLUCAO_ITEM_VENDA DI

join itemvenda on (devolucao_item_venda.cod_produto = itemvenda.codprod)

join PRODUTOS P on (P.codprod = DI.cod_produto)

join familia F on (familia.codgrupo = produtos.codgrupo)

join DEVOLUCAO_VENDA DV on (DI.cod_devolucao = DV.cod_devolucao)

join VENDAS V on (DV.codvenda = V.codvenda)

join CLIENTES C on (V.codcliente = C.codcliente)

where

DV.dt_devolucao between '20.02.2007' and '20.02.2008'

and V.tipovenda = 1

group by F.descricao

--total de vendas a vista por familia

select sum(itemvenda.qtde * itemvenda.vl_unitario) VL_TOT_VEN_VISTA_FAM,

familia.descricao

from familia

join produtos on (familia.codgrupo = produtos.codgrupo)

join itemvenda on (produtos.codprod = itemvenda.codprod)

join vendas on (itemvenda.codvenda = vendas.codvenda) where vendas.tipovenda = 1

and (vendas.dtvenda between '25.02.2007' and '25.02.2008')

group by familia.descricao'

vlw

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Oi, 'etspaz'!

Você não precisa ter os dois datasets na mesma banda.

Na banda de detalhe, antes de ela ser impressa ON BEFORE PRINT, execute a segunda query para a busca conforme a cláusula where que você deseja. O resultado você passa para um label do report.

Fará esta chamada conforme o número de linha a serem executadas na primeira query (a que está ligada ao report).

Entendeu?

Link to comment
Share on other sites

  • 0
Oi, 'etspaz'!

Você não precisa ter os dois datasets na mesma banda.

Na banda de detalhe, antes de ela ser impressa ON BEFORE PRINT, execute a segunda query para a busca conforme a cláusula where que você deseja. O resultado você passa para um label do report.

Fará esta chamada conforme o número de linha a serem executadas na primeira query (a que está ligada ao report).

Entendeu?

olá Denis Courcy, obrigado por responder e sobre a sua dica, sou iniciante como disse, spu iniciante, então tenho algumas duvidas:

1-o label q receberá o resultado eu posso colocar na mesma banda?pra exibir assim:

acessório: R$ 12.000,00 R$ 56,00

consumo: R$ 21.000,00 R$ 56,00

odonto: R$ 5.580,25 R$ 56,00

os valores da direita seriam o label.

2-no evento on before print posso colocar uma instrução sql normalmente pra executar?

3-

Fará esta chamada conforme o número de linha a serem executadas na primeira query (a que está ligada ao report).
como eu faria isto?

4-como faço o label receber o resultado da consulta?

mais uma vez, obrigado por me atender e me desculpe pela avalanche de perguntas, mas sou estagiario a pouco tempo na empresa, mas me passaram tarefas de programador ... como manutenção de sistema q está em produção a 4 anos.

por enquanto vou tentando aqui,

vlw.

Edited by etspaz
Link to comment
Share on other sites

  • 0

consegui resolver no delphi mesmo.

no dataset do total de vendas adicionei um campo do tipo loockup, fazendo loockup com o dataset do total de devolução.

assim, no rave foi só atualizar o data view, desta forma no rave com um unico data view trago os valores q preciso dos dois datasets usados no delphi.

deu pra entender.

agradeço ao Denis pela disposição em me ajudar, mas se quiser responder às minhas duvidas sobre como trabalhar com codigo no rave, seria bom, pois seria mais um aprendizado, vlw.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...