Página
Inicial

Power

Artigos

BD
SQL

JavaScript

Vídeo Aulas

Xiko.php

Algoritmos

Alunos

SQL OnLine

Sugestões
e Críticas

Horário do
Professor

Cadastro

Lembrar Senha

16 Exemplo 16 – Emissão de Relatórios

16.1 Abra o Powerbuilder e conecte no banco de dados, como explicado nos itens 10.5, 10.6 e 10.7.

16.2 Criaremos agora um relatorio que tem por objetivo, imprimir as familias dos produtos por intervalo. Clique no botão DataWindow da PowerBar, como mostra a figura abaixo :



16.3 Em seguida na janela Select DataWindow, clique no botão New. Veja figura abaixo :




16.4 Na janela New DataWindow, selcione em Data Source o item Quick Select e em Presentation Style, selecione Tabular, este é o estilo de apresentação que queremos neste exemplo. Clique no botao OK.


16.5 Na janela Quick Select, Em Tables clique no item Familias, em seguida clique no botão Add All. Agora basta clicar no botão OK.


16.6 Na nova DataWindow, abra um espaço maior acima da faixa Header, poseicione e redimensione os campos como achar melhor.

16.7 No menu Objects, clique no item Text.


16.8 Clique na parte superior da DataWindow :


16.9 Veja na figura abaixo, como alterar o conteúdo do objeto Text colocado na window. Altere também a fonte, sublinhado, itálico e o tamanho se julgar conveniente.



16.10 Novamente no menu Objects, clique no item Line.


16.11 Clique entreo Text Object Familia e a faixa cinza Header. Aumente o tamanho da linha, fazendo com que ela quase ligue o lado esquerdo com o lado direito da datawindow.


16.12 Outra vez, no menu Objects, clique no item Computed Field.


16.13 Clique na datawindow. Aparecerá a janela Computed Object, no campo Expression, digite as instruções como mostra a figura abaixo, em seguida clique no botão OK.


16.14 O itens disponíveis no menu Objects, também podem ser selecionados pela barra de ferramentas, como mostra a figura abaixo. Clique no item Page Computed Field.


16.15 Clique na datawindow, abaixo de “Emissão :” + today()


16.16 Abaixo da faixa cinza Detail tem a faixa Summary. Arraste a faixa summary para baixo, deixando um espaço de mais ou menos 1 cm entre Detail e Summary.

16.17 Clique no Column Object familia, que está abaixo da faixa Header. É necessário que este objeto esteja selecionado para que este procedimento funcione corretamente. Você sabe se um ou mais objetos estão selecionados, se o respectivo objeto tem quatro pontos, um em cada extremidade. Veja figura abaixo:


16.18 Com o Column Object familia selecionado, cliquen em Objects / Count.


16.19 Abaixo da faixa Detail e acima da Summary, posicione o objeto Count e coloque um objeto Text, como mostra a figura abaixo :


16.20 Tudo que for colocado nesta datawindow será impresso no relatório, assim você pode colocar por exemplo a logomarca da empresa, figuras, etc. Como não haverá necessidade do usuário digitar dados nesta datawindow, clique no botão Tab Order.


16.21 Altere os valores para zero, dos dois Column object : familia e descricao, como mostra a figura abaixo. Em seguida, clique novamente no botão Tab Order, como na figura anterior.


16.22 Clique no botão DataSource (SQL), como mostra a figura abaixo :


16.23 Esta nossa datawindow terá 2 argumentos para retrieve : A familia inicial e a familia final. Para criar estes 2 argumentos, no menu Design, clique no item Retrieval Arguments...


16.24 Na janela Specify retrieval Arguments, crie ra_familia_inicial e ra_familia_final. Os 2 com type Number. Para inserir o segundo argumento, clique no botão Add. Quando terminar clique OK.


Depois de definir os 2 argumentos para retrieve, na parte inferior da tela, no item Where faça como mostra a figura abaixo. A condição é a coluna familia deve ser maior ou igual ao argumento ra_familia_inicial e a mesma coluna familia deve ser menor ou igual ao argumento ra_familia_final.


16.25 Clique novamente no botão Data Source (SQL), para voltar a datawindow.


16.26 Grave as alterações feitas nesta datawindow, clicando no botão save.



16.27 Para separar as datawindow que se destinam a emissão de ralatórios, colocaremos no nome as 3 letra rel. Então, na janela Save DataWindow, digite d_rel_familias no campo DataWindow, como mostra a figura abaixo. Em seguida clique no botão OK.


16.28 O próxmio passo e criar uma window para selecionar o intervalo de familias, e fazer a impressao. Clique no botão window da powerbar.


16.29 Na janela Select Window, clique no botão New.


16.30 Coloque um Controle DataWindow. Para isso use a opção DataWindow do menu Controls ou selecione o botão como mostra a figura abaixo. Em seguida clique na nova window


16.31 Clique na nova window, para inserir o controle. Ajuste o controle, fazendo com que ele ocupe todo o espcaço da window. Deixe apenas um espaço na parte superior da window. Veja figura abaixo :



16.32 Clique com o botão direito do mouse em cima do controle datawindow, depois clique no item properties.


16.33 Na janela Datawindow, digite o nome do controle no campo Name, no campo DataWindow Object Name, digite o nome da datawindow d_rel_familias que é a datawindow com lay-out e dados que desejamos imprimir. Clique no botão OK.


16.34 Clique no botão save, para gravar a nova window.


16.35 Para identificar os objetos window que geram relatorios, colocaremos no nome as letras rel. Então na janela Save Window digite no campo Windows w_rel_familias e clique no botão OK. Veja Figura abaixo :



16.36 Continuando o desenvolvimento da window w_rel_familias, no menu Controls clique no item Static, em seguida clique na parte superior da window. Repita este preocedimento 2 vezes.


16.37 Altere os dois objetos Static Text, colocando Inicial e Final. Veja como na figura abaixo :


16.38 Acrescente mais 2 objetos do tipo EditMask, colocando-os na frente do inicial e final. Clique no botão EditMask em seguida mais um clique no local onde ele deve ser criado.


16.39 Clique com o botão direito do mouse, em cima do EditMask colocado após o Incial, em seguida clique no item Porperties.


16.40 Em General, coloque o nome em_inicial no campo Name.


16.41 Em Mask, faça como mostra a figura abaixo, em seguida clique no botão OK.


16.42 Repita os procedimentos 16.35, 16.36 e 16.37 para o objeto EditMask após o StaticText final.

16.43 Vamos agora fazer algumas validações. A primeira : Não será permitido informar para em_incial um valor menor que 1. Então clique com o botão direito do mouse em cima do EditMask em_inicial, clique no item Script.


16.44 No evento modified do objeto em_inicial, digite as 4 linhas como mostra a figura abaixo. Para sair do script e voltar para a window use no teclado Ctrl + F4.


16.45 Repita o procedimento 16.39 para o EditMask em_final, e codifique no evento modified for em_final, as linhas da figura abaixo : ( o valor inicial não pode ser maior que o final ).


16.46 Após colocar estes 2 scripts de validação dos valores que serão informados pelo usuário, criaremos os 2 únicos eventos de usuário que serão utilizados nesta window. No menu Declare, clique no item User Events... É impressindível que na hora que você clicar no item User Events não tenha nenhum objeto selecionado na window.


16.47 Para confirmar que não tinha nenhum objeto selecionado, na hora que você clicou no item User Events, a janela que aparece tem como título : Events - w_rel_familias. Veja figura abaixo. Crie os 2 eventos de usuário e clique no botão OK.


16.48 Vamos agora a codificação dos eventos da window w_rel_familias. Clique com o botão direito do mouse na window, e selecione Script. Veja como na figura abaixo :



16.49 O primeiro evento a ser codificado pode ser o open. Clique no evento open em Select Event e digite a linha de comando, como mostra a figura abaixo :


16.50 Clique em Select Event, e selecione ue_abrir.


16.51 No evento ue_abrir, codifique as linhas abaixo :

integer resp
resp = dw_rel_familias.retrieve ( integer ( em_inicial.text ) , integer ( em_final.text ) )
if resp <= 0 then
   messagebox ( "Aviso", "Não ha dados para Impressão" )
end if

16.52 No evento ue_imprimir, codifique as linhas abaixo :

long Job
integer resp
PrintSetup()
Job = PrintOpen()
resp = PrintDataWindow ( job, dw_rel_familias )
if resp = 1 then
messagebox ( "Aviso", "Impressão enviada com sucesso" )
else
messagebox ( "Aviso", "Probelmas para enviar a Impressão" )
end if
PrintClose( job )

16.53 Para sair do modo Script e voltar a window, outra alternativa e clicar no botão Return. Veja como na figura abaixo.


16.54 Grave as alterações feitas na window repitindo o procedimento do item 16.34. Pronto nossa window está pronta, agora vamos fazer as alterações necessárias nos menus, para que o usuário possa ter acesso a esta nova window.

16.55 Precisamos colocar no menu opções para o nosso usuário fazer a impressão do relatório que criamos. Primeiro faremos algumas mudanças no menu m_geral. Para abrir o m_geral, clique no botão Menu da Powerbar.


16.57 Na janela Selct Menu, clique em m_geral em seguida no botão OK.


16.58 No item Arquivo, acrescentaremos a opcão de impressão : Imprimir , em Shortcut colcaremos como tecla de atralho Ctrl + P.


16.59 Para definir o que deve ser executado, quando o usuário clicar na opção Imprimir, vamos codificar o Script para o item Imprimir. A mão branca deve estar indicando, que o item imprimir é o que está sendo codificado, então clique no botão Script. Veja figura abaixo :


16.60 No Script - Clicked for m_imprimir, utilizaremos a linha de comando mostrada na figura abaixo, para executar o evento de usuário ue_imprimir da window em execução. Quando terminar de digitar a linha de comando, clique no botão Return, para voltar ao menu. Veja na figura abaixo :


16.61 De volta ao item Imprimir do menu Arquivo, coloque em Text de Toolbar a palavra Imprimir, como mostra a figura abaixo :


16.62 Agora, em Pictures selecione em Stock Pictures o desenho da impressora, ou digite Print! Em Picture Name. Veja como deve ficar na figura abaixo :


16.63 Após o menu Cadasro, crie Relatórios, dentro de Relatórios acrescente o item Familias e depois clique no botão Script. Veja figura abaixo :


16.64 Em Script - clicked for m_familias, digite as 2 linhas da figura abaixo em seguida clique no botão Return.


16.65 Pronto, pra finalizar as alterações em m_geral, clique no botão Save para gravar as mudanças e no botão close para fechar o m_geral.


16.66 Como as opções de menu para relatórios, são diferentes das window de cadastro, criaremos um menu exclusivo. Clique no botão Menu da powerbar.


16.67 Na janela Select Menu, clique no botão Inherit..., porque o novo menu que criaremos deve herdar todas as propriedades e eventos do m_geral.


16.68 Se o nosso novo menu deve herdar todas as informações do m_geral, selecione m_geral na window Inherit From Menu e clique no botão OK.


16.69 Clique no botão save, para gravar este novo menu.


16.70 Na janela Save Menu, digite o nome para este novo objeto Menu no campo Menus, em seguida clique no botão OK. Seguindo o padra de nomes utiilzado até agora, coloque m_relatorios, como mostra a figura abaixo :


16.71 O próximo passo é selecionar a propriedade Visible, em Style e Toolbar, para todos os ítens do menu Arquivo.No caso de relatórios deixaremos visível apenas : Recuperar, Imprimir e Fechar. Nas duas figuras abaixo, mostro a propriedade Visible marcada em Style e Toolbar para o item Recuperar. Marque também para os itens Imprimir e Fechar. Desmarque esta mesma propriedade para os itens Novo, Salvar, Excluir e Sair.


 


16.72 Pronto o menu para relatórios está pronto, grave as alterações e feche este objeto. Veja como no item 15.65. O próximo passo e colocar o m_relatorios como sendo o menu da window w_rel_familias. Clique no botão Window da powerbar.


16.73 Para abrir a window w_rel_familias, clique na lista em seguida no botão OK.


16.74 Para acessar as propriedades da window w_rel_familias, sem marcar nenhum objeto da window, clique no botão Properties.


16.75 Em General, coloque um título no campo Title e o nome do menu em MenuNam, em seguida clique no botão OK. Veja como na figura abaixo :


16.76 Ok, finalmente vamos ver o resultado. Grave as alterações feitas na window clicando no botão save e feche-a clicando no botão close. Clique no botão Run, como mostra a figura abaixo :


16.77 Em nosso sistema, clique no menu Relatórios, em seguida no item Familias.


16.78 Digite os valores Inicial e Final, nos respectivos campos e clique no botão Recuperar.


16.79 Após clicar no botão Recuperar o relatórios, será mostrado na tela, o usuário pode navegar nas páginas utilizando as teclas PageUp e PageDown e para imprimir basta clicar no botão Imprimir.