QuickReport com QRGroup
Estou utilizando o componente QRGroup num relatório para listar todos
os funcionários de uma regiao/local, por regiao/local. Cada região tem de 1 a N locais e cada Local tem de 1 a N funcionários. O Reverso desse relecionamento (funcionário para local e local para regiao) é sempre de 1 para 1. Montei uma única Query que me retorna todos os dados necessários ao relatorio(cod_regiao,cod_local,nome_local,inscricao,nome e funcão).
Minha intenção é manter o QRGroup acima da Band Detail em todas as páginas do relatório, quebrando em cada página, somente quando o próximo registro pertencesse à região/local subsequente à exibida na QRGroup corrente. Até consegui fazer isso utilizando a propriedade ReprintOnNewPage. Mas não estou conseguindo fazer a quebra de funcionários por regiao/local.
Existe alguma forma de programar essa quebra com uma única query ou preciso de duas? Já tentei várias formas de código mas não estou conseguindo o que quero. Aviso que não dá para trabalhar com MasterDetail, pois não estou trabalhando com duas tabelas e sim quatro (Cadastro,Região/Local,Alocação,Funções). A não ser que tenha uma forma de construir MasterDetail com duas queries ao invés de duas Tables, onde eu geraria duas queries resultantes das quatro tabelas e as relacionaria. Se houver essa possibilidade vocês podem me ajudar? Todos os exemplos possíveis serão bem vindos e após depurá-los verei qual o que se adequa melhor a minha necessidade.
Desde já agradeço e aguardo a colaboração dos colegas.
Abraços a todos,
Mônica.
os funcionários de uma regiao/local, por regiao/local. Cada região tem de 1 a N locais e cada Local tem de 1 a N funcionários. O Reverso desse relecionamento (funcionário para local e local para regiao) é sempre de 1 para 1. Montei uma única Query que me retorna todos os dados necessários ao relatorio(cod_regiao,cod_local,nome_local,inscricao,nome e funcão).
Minha intenção é manter o QRGroup acima da Band Detail em todas as páginas do relatório, quebrando em cada página, somente quando o próximo registro pertencesse à região/local subsequente à exibida na QRGroup corrente. Até consegui fazer isso utilizando a propriedade ReprintOnNewPage. Mas não estou conseguindo fazer a quebra de funcionários por regiao/local.
Existe alguma forma de programar essa quebra com uma única query ou preciso de duas? Já tentei várias formas de código mas não estou conseguindo o que quero. Aviso que não dá para trabalhar com MasterDetail, pois não estou trabalhando com duas tabelas e sim quatro (Cadastro,Região/Local,Alocação,Funções). A não ser que tenha uma forma de construir MasterDetail com duas queries ao invés de duas Tables, onde eu geraria duas queries resultantes das quatro tabelas e as relacionaria. Se houver essa possibilidade vocês podem me ajudar? Todos os exemplos possíveis serão bem vindos e após depurá-los verei qual o que se adequa melhor a minha necessidade.
Desde já agradeço e aguardo a colaboração dos colegas.
Abraços a todos,
Mônica.
Monica.bolsas
Curtidas 0
Respostas
Luizfernando777
02/10/2003
Olá td bem,
vc já experimentou em dividir em várias Querys
e usar o RQSubDetail,
pelo que noto o DataSet do QR aceita a Query,
estou fazendo este comentário pq já fiz algo parecido.
vc já experimentou em dividir em várias Querys
e usar o RQSubDetail,
pelo que noto o DataSet do QR aceita a Query,
estou fazendo este comentário pq já fiz algo parecido.
GOSTEI 0
Monica.bolsas
02/10/2003
Oi Luiz Fernando,
Agradeço pela resposta. Mas veja bem. Eu posso montar duas queries com base nas quatro tabelas, onde a primeira me retorna os dados de cada regiao/local(cod_regiao,cod_local e nome_local) e a outra me retorna os dados dos funcionários que pertencem à regiao/local.
Exemplo1 - a Query1 retorna os dados da seguinte forma:
cod_regiao - cod_local - nome_local
001 010 Instituto Benjamin Constant
010 015 Estácio de Sá - Ed. Menezes Cortes - SL. 1 a 21
010 020 Estácio de Sá - Ed. Menezes Cortes - SL. 22 a 42
015 010 Desipe - Serrano Neves
015 020 Desipe - Jonas Lopes de Carvalho ... Etc.
Exemplo2 - a Query2 retorna os dados de todos os funcionários de uma determinada regiao/local da seguinte forma(os funcionários abaixo são verídicos e pertencem à regiao/local = 001/010):
inscricao - nome - funcao
573021 Ana Lúcia Machado de Oliveira Melo Ledor
0002 Ana Maria de Oliveira Leandro Ledor etc.
O dataset do quickreport deve ser apontado portanto para qual das duas? E com relação a fazer MasterDetail com Queries? você sabe como? Eu tenho uma única query montada e testada que relaciona todas as quatro tabelas e me retorna todos os dados exibidos pelas duas queries exemplo acima. Neste caso o dataset do quickreport apontaria somente para ela. Mas, ainda assim com deveria fazer para tratar a quebra de funcionários a cada mudança de regiao e/ou local?
O meu problema quanto à esta última alternativa é de lógica de programação. Não estou conseguindo montar um algoritmo que leia cada linha da query única, teste se é mesma regiao e local através de variáveis e, se positivo, imprima todos de uma mesma regiao e local, ou do contrário quebre a página quando trocar de região e local. Desculpe a minha ignorância, mas tenho pouca experiência ainda com programação de relatórios.
Aguardo seu retorno.
Abraços,
Mônica.
Agradeço pela resposta. Mas veja bem. Eu posso montar duas queries com base nas quatro tabelas, onde a primeira me retorna os dados de cada regiao/local(cod_regiao,cod_local e nome_local) e a outra me retorna os dados dos funcionários que pertencem à regiao/local.
Exemplo1 - a Query1 retorna os dados da seguinte forma:
cod_regiao - cod_local - nome_local
001 010 Instituto Benjamin Constant
010 015 Estácio de Sá - Ed. Menezes Cortes - SL. 1 a 21
010 020 Estácio de Sá - Ed. Menezes Cortes - SL. 22 a 42
015 010 Desipe - Serrano Neves
015 020 Desipe - Jonas Lopes de Carvalho ... Etc.
Exemplo2 - a Query2 retorna os dados de todos os funcionários de uma determinada regiao/local da seguinte forma(os funcionários abaixo são verídicos e pertencem à regiao/local = 001/010):
inscricao - nome - funcao
573021 Ana Lúcia Machado de Oliveira Melo Ledor
0002 Ana Maria de Oliveira Leandro Ledor etc.
O dataset do quickreport deve ser apontado portanto para qual das duas? E com relação a fazer MasterDetail com Queries? você sabe como? Eu tenho uma única query montada e testada que relaciona todas as quatro tabelas e me retorna todos os dados exibidos pelas duas queries exemplo acima. Neste caso o dataset do quickreport apontaria somente para ela. Mas, ainda assim com deveria fazer para tratar a quebra de funcionários a cada mudança de regiao e/ou local?
O meu problema quanto à esta última alternativa é de lógica de programação. Não estou conseguindo montar um algoritmo que leia cada linha da query única, teste se é mesma regiao e local através de variáveis e, se positivo, imprima todos de uma mesma regiao e local, ou do contrário quebre a página quando trocar de região e local. Desculpe a minha ignorância, mas tenho pouca experiência ainda com programação de relatórios.
Aguardo seu retorno.
Abraços,
Mônica.
GOSTEI 0
Luizfernando777
02/10/2003
prezada colega:
Vc poderia me mandar um
projeto exemplo, para estudar,
o caso,
e me monta um exemplo no Word, de
como vc quer a impressão.
mas mesmo assim vou estudar
o q vc mandou
Vc poderia me mandar um
projeto exemplo, para estudar,
o caso,
e me monta um exemplo no Word, de
como vc quer a impressão.
mas mesmo assim vou estudar
o q vc mandou
GOSTEI 0
Fabio.hc
02/10/2003
Estou utilizando o componente QRGroup num relatório para listar todos
os funcionários de uma regiao/local, por regiao/local. Cada região tem de 1 a N locais e cada Local tem de 1 a N funcionários. O Reverso desse relecionamento (funcionário para local e local para regiao) é sempre de 1 para 1. Montei uma única Query que me retorna todos os dados necessários ao relatorio(cod_regiao,cod_local,nome_local,inscricao,nome e funcão).
Vc pode colocar um QRGroup : expression cod_regiao.
outro QRGroup : expression cod_local
detail: nome_local,inscricao,nome e funcão
GOSTEI 0
Monica.bolsas
02/10/2003
Oi Fábio,
Também pensei nessa alternativa, mas minha tentativa foi frustrada pois não posso (pelo menos até agora não sei como fazer) redimensionar a band QRGroup. Caso pudesse colocaria uma do lado da outra e resolveria o problema. Estou enrolada pois estou trabalhando em cima da migração de uma aplicação em Clipper para Delphi. E a ordem é que os layouts dos relatórios sejam matidos. E o layout deste relatório está da seguinte forma:
------------------------------------------------------------------------------------
regiao:<cod_regiao> local:<cod_local> - <nome_local> (QRGroup)
Inscrição Nome Função
------------------------------------------------------------------------------------
<inscrição> <nome> <função> (DetailBand)
------------------------------------------------------------------------------------
Pelo que você vai observar, região e local estão dentro da mesma QRGoup. A minha dificuldade é forçar uma nova página quando a próxima regiao e/ou o próximo local lidos são diferentes dos armazenados em variáveis auxiliares para ajudarem com o teste e com o loop.
Aguardo retorno.
Abraços,
Mônica.[/list]
Também pensei nessa alternativa, mas minha tentativa foi frustrada pois não posso (pelo menos até agora não sei como fazer) redimensionar a band QRGroup. Caso pudesse colocaria uma do lado da outra e resolveria o problema. Estou enrolada pois estou trabalhando em cima da migração de uma aplicação em Clipper para Delphi. E a ordem é que os layouts dos relatórios sejam matidos. E o layout deste relatório está da seguinte forma:
------------------------------------------------------------------------------------
regiao:<cod_regiao> local:<cod_local> - <nome_local> (QRGroup)
Inscrição Nome Função
------------------------------------------------------------------------------------
<inscrição> <nome> <função> (DetailBand)
------------------------------------------------------------------------------------
Pelo que você vai observar, região e local estão dentro da mesma QRGoup. A minha dificuldade é forçar uma nova página quando a próxima regiao e/ou o próximo local lidos são diferentes dos armazenados em variáveis auxiliares para ajudarem com o teste e com o loop.
Aguardo retorno.
Abraços,
Mônica.[/list]
GOSTEI 0
Edmar Bittar
02/10/2003
Tente usar no Group -> Expression: cod_regiao + cod_local.
Mantenha os demais itens.
Já usei em relatorios parecido com o seu e funcionou.
Mantenha os demais itens.
Já usei em relatorios parecido com o seu e funcionou.
GOSTEI 0