![]() |
||||||||
|
|
||||||||
|
| ||||||||


| com exemplos em VB |
| Componente para deixar forms em Vb semelhantes às telas do winnamp |
| Componente para colocar sua aplicação VB no Systray |
| Componente para transformar sua aplicação VB em serviço |
| Ferramentas úteis para quem usa Olap Server |
| |

|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pesquisa personalizada
Usando Crystal 8 com Visual Basic Apesar de útil o Data Report não possui muitos recursos para geração de relatórios. Justamente por isso é muito comum que programadores VB utilizem o Crystal Reports ao invés do Data Report. A versão 8 do Crystal Reports se integra ao VB 6 através de Designers. Designers são interfaces para desenvolvimento que surgiram no VB 6 e podem ser criadas por qualquer desenvolvedor de componentes especializado em C++. Pois bem : Após a instalação do Crystal o 1o passo é ativar a exibição do designer do Crystal. Para isso devemos ir em Project->Components, selecionar a guia Designers e marcar o designer do Crystal. (Ver imagem 1) Feito isso o Crystal Reports já irá aparecer no menu Project (Add Crystal Reports 8). Ao selecionarmos esta opção o Designer do Crystal é adicionado ao projeto e ele já inicia um Wizard para a criação do relatório. (Ver imagem 2) Na primeira tela do Wizard podemos selecionar se desejamos utilizar o Report Expert para criarmos o relatório, se iremos cria-lo na mão (blank report) ou se vamos abrir um relatório do crystal já salvo. Caso desejemos utilizar o Report Expert (iremos fazer isso neste artigo), devemos selecionar um entre os diversos tipos de relatórios possíveis. Vamos selecionar o Standard e passar para a próxima tela. (Ver imagem 3) Na tela que se abre o 1o passo a fazer é selecionarmos as tabelas que farão parte do relatório. O Crystal Reports permite que selecionemos tabelas de bancos de dados diferentes se necessário. Vamos clicar em Project para selecionarmos a conexão que desejamos. Na janela que se abre devemos selecionar o tipo de conexão. O VB atualmente trabalha com ADO/OLEDB, é o tipo de conexão mais recomendado. DAO e ODBC devem ser evitados ao máximo devido a questões de performance (ADO/OLEDB tem melhor performance). Em alguns casos nos quais não exista um driver OLEDB para acesso ao banco será inevitável usar ODBC, mas apenas nestes casos. (Ver imagem 4) Desta forma devemos selecionar a opção ADO/OLEDB e clicar em Build. Será exibida uma tela que nos permitirá montar a string de conexão. O OLEDB possui drivers para diversos bancos de dados, portanto a partir desta tela podemos montar conexão para um SQL Server, um Oracle, um Access ou outros. (Ver imagem 5) Em Provider selecionamos o banco de dados adequado (em nosso exemplo, SQL Server), clicamos em Next. A tela "Connection" se adapta ao banco de dados escolhido. No caso devemos preencher o nome do servidor, o login e o banco de dados que iremos utilizar. Vamos usar o banco de dados Northwind, banco de exemplo que acompanha o SQL Server. Após darmos Ok nas duas últimas janelas, vemos a janela "Select RecordSet", na qual devemos definir qual conjunto de registros iremos utilizar deste banco. (Ver imagem 6) Observe que não estou mencionando tabela, mas sim conjunto de registros. Podemos selecionar uma tabela inteira ou montar uma instrução SQL juntando quantas tabelas desejarmos. Em nosso exemplo vamos utilizar a tabela Customers. Ao clicarmos Ok a tabela é adicionada na lista de tabelas. Podemos então selecionar mais informações ou seguirmos adiante. Vamos seguir adiante. (Ver imagem 7) A tela seguinte, Fields, nos permite selecionar os campos que serão exibidos. Basta transferirmos os campos da esquerda para a direita para que estes passem a fazer parte do relatório. Vamos inicialmente transferir os campos CompanyName, Address e City. Do lado direito da tela podemos clicar em cada campo e definir o cabeçalho do campo no relatório, tornando o cabeçalho mais amigável para quem lerá o relatório. Neste exemplo podemos colocar o nome dos campos em português. (Ver imagem 8) Observe que a tabela customers tem duas informações sobre o contato na empresa : seu título (cargo) e seu nome. Vamos fazer com que essas duas informações apareçam em um único campo concatenadas na forma cargo : nome. Para isso devemos montar uma fórmula no relatório, clicando no botão "Formula...". Deveremos dar um nome para a fórmula (é como se fosse um novo nome de campo). Chamaremos a fórmula de "Contato". (Ver imagem 9) Na janela de montagem da fórmula, em sua divisão superior esquerda vemos 2 itens : Report Fields e ADO. Em report fields vemos os campos já incluidos no relatório, em ADO vemos os campos ainda disponíveis. Vamos selecionar em ADO o campo contacttitle e dar duplo clique. O nome do campo é transferido para a janela inferior, em uma escrita que o Crystal pode entender ({ado.ContactTitle}). Nós iremos concatenar este campo com " : " e com o campo ContactName, portanto a fórmula ficará : {ado.ContactTitle} & " : " & {ado.ContactName} (Ver imagem 10) As outras 2 divisões da parte superior da janela de montagem de fórmulas nos ajudariam na inclusão de funções e de outros operadores na fórmula, o que neste exemplo não foi necessário. Ao clicarmos no botão "Save & Close" nossa fórmula é adicionada ao item "Report Fields" na lado esquerdo da tela. Observe que a fórmula poderia ser exibida como campo do relatório ou não. Para que seja exibida precisamos passa-la para o lado direito da tela. Vamos fazer isso e passar para o próximo passo. Na tela seguinte, Group, devemos definir níveis de agrupamento para os dados do relatório. No exemplo da tabela Customers podemos exibir os dados agrupados por País e região (Country e Region). Vamos portanto passar esses 2 campos para o lado direito da tela. A ordem dos grupos faz diferença : Cada país tem várias regiões, portanto primeiramente os clientes serão agrupados por país e dentro de um grupo de um país serão feitos vários grupos de regiões. Portanto Country é colocado primeiro e em seguida entra o campo Region. (Ver imagem 11) Na tela seguinte, de totais, vamos definir que tipo de totalização será feita. Como selecionamos 2 grupos na tela anterior temos 2 guias na tela de totais, cada uma entitulada com o nome do grupo (Country e Region). Desta forma precisaremos definir a totalização para cada um dos agrupamentos. Vamos começar pelo Country. (Ver imagem 12) Em nosso exemplo vamos realizar uma contagem de clientes. Vamos selecionar um campo qualquer (em geral se escolhe a chave, CustomerId em nosso exemplo) e joga-lo para o lado direito da tela. Em "Sumary Type" vamos definir que faremos um Count de CustomerId's. Observe que para fazer uma contagem (count) podemos selecionar qualquer campo. O mesmo não acontecerá com uma soma ou uma média. Vamos selecionar a opção "Percentage of" para que a cada grupo de um país seja mostrado o percentual de clientes neste país em relação ao total de clientes da empresa. A única opção exibida na combo é "Grand Total...". A CheckBox "Add Grand Totals" já fica marcada, fazendo com que seja incluido no relatório um total geral de clientes. Para o grupo de regiões devemos repetir os mesmos passos, com a única diferença que o item "Add Grand Totals" estará desabilitado (afinal já totalizamos os países). Na tela seguinte, no item "Top N", podemos fazer com que não sejam exibidos todos os itens de um agrupamento, mas apenas os maiores ou menores N itens. Todos os demais são agrupados com o nome "Outros". A definição de quais são os maiores ou menores é feita com base nos campos de totais criados na tela anterior. Observe que esta tela é também separada por grupo : Podemos fazer uma seleção de Top nos países e/ou nas regiões. (Ver imagem 13) Vamos, neste exemplo, exibir apenas os 5 países que mais possuem clientes e mostrar todos os outros como "Outros". Devemos selecionar a opção "Sort the top N group". A opção "Based on.." já será exibida por default (temos apenas um total). Deveremos então definir quantos iremos exibir ("Where N is" - exibiremos 5) e o nome que será dado aos demais ("Outros"). Vamos então passar para a próxima tela. Na tela seguinte ("chart") podemos montar um gráfico demonstrando a distribuição de clientes em cada país. Vamos selecionar um gráfico de torta ("Pie"). Na guia "Data" vamos selecionar o layout do gráfico como Advanced. Devemos então selecionar a forma como os gráficos serão exibidos. Se selecionarmos "once per report" (uma vez por relatório) no item "On change of" teremos como opção "Country" e "Country and Region". Se escolhermos Country o gráfico será baseado no total de clientes por país, se escolhermos "Contry and Region" será baseado no total de clientes de cada região de cada país. A opção "Show" nos permite ainda selecionar o total que irá gerar o gráfico, mas em nosso caso temos apenas um (o count). (Ver imagem 15) Se, porém, selecionarmos "For each ado country" a opção que nos restará em "On change of" será "Region". Significa que para cada país será montado um gráfico demonstrando a distribuição de clientes em suas regiões. Em nosso exemplo vamos utilizar a opção "Once per report" com "On change..." como "Country". As duas guias seguintes, Options e Text permitem que configuremos o visual do gráfico, tal como legendas e títulos. Vamos deixar com a configuração default. A tela seguinte, Select, nos permite filtrar os registros que serão exibidos no relatório. Quando adicionamos um campo na caixa "Select field" são abertas novas caixas para a realização da filtragem. Não faremos nenhuma filtragem em nosso exemplo. (Ver imagem 16) Por fim, a última tela (Style) nos permite definir o estilo do gráfico. Vamos selecionar Shadding. (Ver imagem 17) Ao clicarmos em Finish é exibida uma janela com duas perguntas : (Ver imagem 18) "Do you want the expert to add a form containing the Crystal Report Viewer Control ?" O Viewer Control é o componente ActiveX utilizado pelo Crystal 8 para exibir o relatório. Selecionando esta opção o Report Expert irá automaticamente criar um form com o Report Viewer e a codificação para exibir o relatório, o que é muito recomendável. Já a 2a pergunta, "Would you like the expert to modify project properties to set this form as the startup object?", fará com que o form criado pela primeira seja definido como startup object do projeto. Isso é útil para testes do projeto, pois bastará executarmos o projeto para vermos como ficará nosso relatório. Teremos, claro, que mudar essa opção posteriormente. Vamos manter as duas opções como sim. É interessante observarmos o código criado pelo Report Expert no formulário que ele acrescentou ao projeto. Veja : Dim Report As New CrystalReport1 Private Sub Form_Load() End Sub Private Sub Form_Resize() End Sub
Observe também que o Resize do form já foi definido para que o Report Viewer acompanhe o tamanho do formulário. Para testarmos o relatório basta executarmos a aplicação. Observe que a divisão do lado esquerdo da tela auxilia o usuário a localizar uma determinada informação dentro do relatório. Basta clicar em um item e o item ganha destaque no relatório. (Ver imagem 19) O Report Viewer tem um recurso muito útil para nossas aplicações : Ele permite que o usuário da nossa aplicação possa filtrar os dados do relatório conforme desejar. Para tanto basta acrescentar antes do método viewreport (no load do formulário) a seguinte instrução : CRViewer1.EnableSelectExpertButton = True Com isto será exibido um novo botão no Report Viewer que permitirá que o usuário filtre os dados do relatório a vontade. Por fim devemos alterar o startup object apontando novamente para o formulário principal da aplicação e precisamos criar no form principal (no menu de opções, por exemplo) uma opção para chamar o relatório. Em nosso exemplo vamos criar apenas um botão para isso : Private Sub Command1_Click() Espero que este artigo sirva como uma breve introdução aos recursos do Crystal, extremamente úteis e ágeis para o desenvolvimento de relatórios.
Dennes Torres |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Veja abaixo os comentários já enviados :
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Quer
saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e Prepare-se para o Mercado! Veja o que a Búfalo tem para você. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
� Búfalo Informática,
Treinamento e Consultoria -
Rua Álvaro Alvim, 37 Sala 920 - Cinelândia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail: contato@bufaloinfo.com.br