GARANTIR DESCONTO

Fórum Mais um dúvida de Report Builder #347111

08/10/2007

0

Pessoal, tenho um While na tabela de funcionário. Esse While me chama uma procedure que descarrega o conteúdo dela no Relatório. Até aí funciona bem. Acontece, que existe um outro critério de carregar a minha procedure, que seria por grupo ou centro de custo(vários funcionários pertencem a um mesmo centro de custo). Só que, para cada funcionário, deveria imprimir em páginas diferentes(uma para cada funcionário). Preciso, que após o Next(ponteiro posicionado no próximo registro), eu reimprima tudo novamente, cabeçalho, banda Header e detalhe e subrelatórios e etc... Não sei como fazer isso usando o Report Builder.


Paulo

Paulo

Responder

Posts

08/10/2007

Comodelphi

Precisa realmente de um ´While´ para gerar o relatório no BeportBuilder. No modo design do ReportBuilder vc controla todas essas propriedades de grupo.


Responder

Gostei + 0

08/10/2007

Paulo

Creio que sim, pois em realidade, o nome do funcionário não vem de uma tabela, são necessários várias tabbelas, para trazer o resultado, por isso tenho uma função PegarFunc.... Aqui na empresa trabalhamos com RxMemoryData, por isso, que seu criar mais campo para carregar o nome dos funcs e fazer uma quebra por grupo, posso ter muita coisa em memória e ai complica. Para acabar com o RxMemory, nem toque nesse assunto, pois já tentei também e não consegui, pois todos os relatório da empresa usam esse cara.


Responder

Gostei + 0

08/10/2007

Comodelphi

vc popula o rxMemory e depois manda o reportBuilder imprimir, ou vc executa um print no relatorio para cada registro. Se for a primeira situação é tranquilo. Agora se for o segundo caso ja fica mais complicado. Eu até tenho alguns relatorios em RB que uso código, mas os dados já vem do jeito que preciso direto da query. Até acredito que deva existir RB os metodos para controlar quebra de pagina e etc. Se puder detalhar mais como vc gera esse relatorio.


Responder

Gostei + 0

08/10/2007

Paulo

Eu populo o Rx e depois descarrego. Voui tentar explicar melhor. No programa eu tenho o centro de custo(CC). Em cada CC, há um ou vários funcionários. No menu de impressão, eu tenho Impressão Individual e Coletiva. No Individual, funciona, pois eu passo somente um cara. Quando clico no radiobutton de Coletivo, aparece um Edit para eu escolher o centro de custo. Para esse tipo de impressão, tem que ser um Funcionário por página, ou seja, se houver 100 caras no CC, deve imprimir 100 páginas, com o nome de cada um. O RX é populado com o resultado de uma função, que está funcionando. Esta função, não retorna nem o CC e nem o nome do funcionário(Tem que ser assim). Então o nome, eu carrego no próprio While do Funcionário. O problema é que se eu carregar o RX com o nome e se CC, por exemplo, tiver muitos Funcionários, é mais espaço em memória para ocupar, por isso eu prefiro quebrar no código, assim:
QFunc.Firts; While not QFunc.Eof do begin ... Faço todas as validações aqui QFunc.Next; if QFunc.FieldByName(´Nome´).AsString <> vNomeFunc then //vNomeFunc - Variável que carrega o nome do funcionário begin //Aqui começo a reimpressão em outra página end; end;


Mas isso não tem que ser assim, pois se houver outra forma, mas interessante, claro que eu aceito. Essa foi a forma que veio em minha cabeça no momento, mas nada definitivo. Só quero evitar o RX, pelo problema da memória, mas se não der, vai ele mesmo.


Responder

Gostei + 0

08/10/2007

Paulo

comodelphi, você tinha razão. Bastou um agrupamento e funcionou. Estava dando erro, é porque o Master/Detail, estava apontando para o campo errado. Valeu, problema resolvido. Um grupo e o master/detail, fazendo com o campo da quebra.


Responder

Gostei + 0

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

Aceitar