8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/
-XOLR&HVDU3HGURVR
,QWHJUDQGR5HSRUW0DQDJHUH&ODULRQ
De nada adiantaria gerar relatórios espetaculares no Report Manager, se
não pudéssemos integrá-los aos nossos aplicativos de forma fácil e rápida. É aí
que entra a Classe / Template, escrita pelo Johny Stein, a qual fizemos
algumas modificações e utilizamos agora para gerenciar os nossos relatórios a
partir de aplicativos Clarion.
5HJLVWUDQGRRWHPSODWH
Baixe o pacote dos arquivos do Gescla ou do link do Fórum Clarion. O
link do fórum Clarion é:
http://www.newsclarionbrasil.com.br/forum/rmtemplate.zip
O link acima baixa o zip diretamente do site da News Clarion Brasil, mas
é interessante, se é que você não baixou ainda, que baixe todos os arquivos
disponíveis em http://www.gescla.com.br/forum/viewtopic.php?t=128 pois
contém diversos artigos úteis sobre o assunto, além do link para baixar o
Report Manager.
Descompacte o arquivo UPWHPSODWH]LS no seu disco rígido e copie o
arquivo MV5HSRUWPDQWSO para a pasta WHPSODWH do seu Clarion.
Copie os arquivos ABRM.CLW e
ABRM.INC para a pasta libsrc do seu Clarion.
Estes são os arquivos da classe Report
Manager. Como você terá os fontes da classe e
do template, poderá alterá-los de acordo com as
suas necessidades.
Agora abra a IDE do seu Clarion e acesse
o menu 6HWXSe em seguida7HPSODWH5HJLVWU\.
Se você nunca registrou um template no Clarion,
saiba que esse é o procedimento padrão para
registrar qualquer template de terceiro, ou
mesmo um desenvolvido por você na IDE do
Clarion.
Após isto será aberta uma janela do Windows
Explorer para que você escolha o template a ser registrado. Podem ser
registrados
quaisquer
arquivos com a extensão
.tpl.
Localize
o
arquivo
MV5HSRUWPDQWSO e clique
no botão $EULU.
O template será registrado
e já poderá ser utilizado
pela sua aplicação.
As chamadas para os
métodos da classe RM
estão definidas dentro do
template, mas se preferir,
você
pode
instanciar
diretamente a classe e
fazer uso dos seus
21
8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/
-XOLR&HVDU3HGURVR
métodos diretamente. Para os efeitos da nossa documentação, estamos
usando o template jsReportMan.
&ULDQGRDDSOLFDomR&ODULRQ
Vamos criar uma aplicação Clarion genérica, isto é, uma aplicação que
possa chamar qualquer relatório do Report Manager. É claro que na vida real,
possivelmente você vai colocar este procedimento dentro do seu APP, ou de
uma DLL, se o seu aplicativo for multi DLL.
&ULDQGRR'LFLRQiULRGH'DGRVGD$SOLFDomRGHH[HPSOR
A partir do menu File do seu Clarion (estou usando Clarion 6.3), escolha
a opção 1HZ e no menu que se abrirá
à direita, escolha 'LFWLRQDU\.
Será aberta a janela para a criação de
dicionário. Vamos chamar o nosso
dicionário de &20%52:6('&7,
uma alusão de que vamos utilizar o
Report Manager com um Browse do
Clarion para gerenciá-los.
Uma vez criado o Dicionário, vamos
criar uma única tabela chamada 5(/$7Ï5,2. Vamos criá-la usando TPS,
mas poderia perfeitamente ser uma tabela SQL.
Na seqüência da nossa documentação, desenvolveremos um segundo
aplicativo de exemplo, totalmente orientado para SQL, onde abordamos
diversas técnicas: desde a criação do Banco de Dados, a partir da aplicação
Clarion, até as tabelas SQL e as rotinas de manutenção, com acesso ao
catálogo do PostgreSQL e
muito mais.
Por ora, crie uma tabela
chamada RELATORIO com
os seguintes campos:
1RPHB5HODWRULR
do
tipo
cstring, com tamanho de 255
caracteres.
1RPH, do tio cstring, com
tamanho de 255 caracteres.
Se quiser pode definir uma
chave primária por Nome,
como única, para que não
haja
nenhum nome
de
relatório
repetido.
Meu
objetivo aqui, não é falar
sobre modelagem de dados, mas mostrar como interagir com o Report
Manager a partir do Clarion. O que eu quero mostrar aqui é, como o usuário
poderá cadastrar um relatório em um browse, e depois executá-lo. Tenho
certeza de que o leitor sabe perfeitamente as regras para definição de tabelas,
relacionamentos e integridade referencial.
Salve o seu trabalho e volte a IDE do Clarion.
Usando os recursos do Clarion que você já conhece, crie uma nova
aplicação chamada &20%52:6($33 . Utilizei o Wizard apenas para ser
22
8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/
-XOLR&HVDU3HGURVR
mais rápido, mas poderia criar uma aplicação vazia, sem o wizard, cuja janela
principal fosse o próprio Browse que cadastra imprime os relatórios.
A figura acima mostra a janela de propriedades da aplicação
&20%52:6($33 .
O Wizard deve ter gerado um Browse e um Update para o seu Dicionário
de Dados, conforme
mostra a árvore de
procedimentos.
Agora, na sua aplicação,
acesse as propriedades
globais da aplicação,
clicando no ícone do
globinho (azul). Na janela
que se abrirá, clique no
botão ([WHQVLRQV. Em
seguida,
pelo
botão
,QVHUW, insira o template
de
extensão
global
chamado MV5HSRUW0DQ*OREDOA janela deverá ficar parecida com o fragmento
de tela abaixo:
Pressione o botão OK e volte à árvore de procedimentos.
Em seguida, entre no procedimento %52:6(5HODWyULR, que foi criado pelo
wizard, e faça alguns ajustes no List Box, de maneira que seja visível em tela,
apenas o nome do relatório, melhor dizendo, o nome que o usuário irá dar ao
relatório, e não o seu nome em disco.
Se quiser pode adicionar perfumarias como Greenbar, ícones frescos,
etc, como em qualquer browse Clarion.
A partir do menu 3RSXODWH, escolha &RQWURO 7HPSODWH, e na árvore de
templates que se abrirá escolha MV5HSRUW0DQ3ULQW%XWWRQ. Poscione o botão
23
8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/
-XOLR&HVDU3HGURVR
abaixo do seu browse. Agora clique com o botão direito do mouse sobre o
botão e vamos preencher os
SURPSWV do control template.
A figura ao lado mostra o browse no
)RUPDWDGRU GH 5HODWyULRV do
Clarion 6.3.
Clique com o botão direito do mouse
no botão ,PSULPLU, populado pelo
control template, e acesse a aba
$FWLRQV
Preencha o campo $UTXLYR com a
expressão:
5(/120(B5(/$725,2
Estamos informando ao template que
o nome do relatório será variável
(ponto de exclamação), e que o
conteúdo
virá
do
campo
REL:NOME_RELATORIO
Na seqüência, em $omR GH
,PSUHVVmR, escolha 9LVXDOL]DU, se desejar sempre escolher visualizar os
relatórios antes de imprimir. É claro que isso pode ser mudado para que se
adicionado mais um campo ao browse, se possa dizer se o relatório deverá ser
visualizado ou não. Por ora deixamos o original do template do Johny. Existem
ainda as opções ,PSULPLU, que imprime diretamente sem passar pelo Preview,
e uma opção que exibe uma pergunta antes de abrir o relatório. No nosso caso,
vamos optar por Visualizar. Em seguida, no campo 7tWXORGD-DQHOD, informe o
título a ser exibido na janela de Visualização, que, se quiser, alterando o
template, também pode ser variável. Optamos no momento por exibir
³5(/$Ï5,26´.
Finalmente, informe a mensagem de erro que deverá ser exibida para o usuário
se alguma coisa não sair de acordo com o previsto. Optamos por:
“1mRIRLSRVVtYHODEULURUHODWyULR!”
Pressione o botão 2.para salvar as suas configurações,
Em seguida, vamos fazer algumas modificações no FORM de
atualização do browse, modifique de maneira que fique semelhante à figura
abaixo:
Ao lado do campo que contém o nome do relatório em disco, vamos
popular um controle do tipo 'RV )LOH /RRNXS, que será o responsável por
buscar o nome do relatório em disco, e guardar a sua localização neste campo
para que possa ser executado pelo nosso usuário final a partir do nosso
aplicativo.
24
8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/
-XOLR&HVDU3HGURVR
A partir do menu 3RSXODWH, escolha &RQWURO 7HPSODWH, e na árvore de
templates de controle que aparecerá, escolha 'RV)LOH/RRNXS. Na aba
$FWLRQV, dos prompts do template defina os seguintes campos na aba
*HQHUDO:
)LOH'LDORJ+HDGHU, digite Escolha
um relatório, ou se preferir, em
branco.
'26 )LOHQDPH 9DULDEOH, pelo
controle ... escolha o campo
5(/120(B5(/$725,2, a partir
da tabela do Dicionário de Dados.
Marque o check Box 5HWXUQ WR
RULJLQDO GLUHFWRU\ ZKHQ GRQH,
para que o sistema volte ao
diretório da aplicação depois de
carregar o arquivo de relatório.
Marque também o check Box /RQJ)LOHQDPHV.
Marque ainda o check Box 5HWXUQ
'HIDXOWRQ&DQFHO.
Clique na aba )LOH0DVNV e defina
os arquivos com a extensão .rep no
campo.)LOH0DVNV.
E isto é tudo.
É claro que podemos fazer tratamento para
ajustar o path dos arquivos de maneira que
fique sempre abaixo de nossa aplicação, e para que este processo seja
ajustado sem passar o driver de disco, mas somente o nome da pasta e o
nome do arquivo, coisa que faremos quando desenvolvermos o próximo
aplicativo de exemplo. Este é apenas para ambientar o usuário ao Report
Manager e ao Clarion.
Compile e execute a sua aplicação. Se você fez tudo certinho, nenhum
erro ocorrerá.
No Browse, inclua os relatórios que você gerou, usando para isto o
botão ,QFOXLU. A figura acima mostra o registro para o relatório de clientes no
formulário do Clarion.
Salve a digitação pressionando o botão OK. De volta ao browse este
exibirá todos os relatórios cadastrados. Posicione a Barra apontadora do
Browse sobre o relatório desejado e clique no botão ,PSULPLU.
Em poucos segundos a query será executada e o seu relatório será
gerado em tela, se você escolheu a opção 9LVXDOL]DU.
25
8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/
-XOLR&HVDU3HGURVR
Veja o nosso relatório Browse apresentando todos os relatórios
cadastrados no sistema. .
É claro que poderíamos montar um
list box a partir de uma queue
preenchida pela leitura de um
diretório onde estão os relatórios,
mas no caso dos nossos Sistemas,
os menus são dinâmicos, ou seja,
de acordo com o nível do usuário e
da atividade do usuário, o sistema é
parametrizado para ele, inclusive os
menus do Sistema. A opção de
carregar
os
relatórios,
simplesmente incluindo-os em um
menu oferece uma flexibilidade de
disponibilizar o mesmo sistema
para os mais variados ramos de
atividade. Quando o usuário clica
em imprimir, o relatório é impresso,
mas no caso do nosso sistema, tratamos o clique de mouse para que o
relatório seja impresso assim que o usuário clica sobre o seu nome no Menu
Browse. Veja o nosso relatório impresso:
A próxima figura, mostra outro relatório impresso pelo Clarion, usando outro
DataSet.
26
Download

Usando Report Manager com Clarion e PostgreS4L