Академический Документы
Профессиональный Документы
Культура Документы
Embora j tenhamos abordado temas bsicos relacionados ao Crystal Reports vamos agora procurar aprofundar nosso conhecimento sobre esta ferramenta tratando de questes que fazem parte da maioria das dvidas que surgem quando vamos usar o Crystal Reports. Novamente iremos usar o sistema de perguntas e respostas . A verso abordada ser a 4.6 do Crystal Reports , embora o a verso atual seja a 8.0 , pois assim estaremos atingindo um maior nmero de usurios. Se voc instalou o Crystal Reports na verso 5.0 do VB no ter que instal-lo novamente quando migrar para a verso 6.0. Se voc no instalou , o Crystal Reports no instalado automaticamente com a verso 6.0 e voc vai precisar instal-lo separadamente. Para isto inicialize o arquivo de instalao Crystl32.exe presente no diretrio \COMMON\TOOLS\VB\CRYSREPT no CD 1 do seu VB 6.0
no Menu File selecione a opo New. A seguir selecione na janela - Create New Report - o Expert - Mail Label
Na janela - Create Report Expert - clique sobre o cone Data file , selecione o banco de dados com o qual deseja trabalhar e a seguir clique no boto Add e depois no boto Done. 2- Na aba Fields selecione os campos da tabela para a qual deseja gera as etiquetas
3- A seguir , na aba Label , voc deve selecionar o tipo de etiquetas que pretende usar (opo Choose Mailing Label Type) , caso a etiqueta que voc vai usar no aparea na relao voc dever criar uma indicando as medidas , selecionando a opo User Defined Label
4- No Frame - Printing direction - voc deve informar a ordem de impresso dos registros , pode ser "Across then Down" pois as etiquetas sero impressas na ordem horizontal. 5- No Frame - Number of Labels - Aps voc selecionar a etiqueta ou informar as medidas aqui dever aparecer o nmero de colunas que voc tem em Across Page e quantas etiquetas tem em cada coluna. Se os valores no conferirem com o da sua pgina verifique as medidas . 6- No frame - Page Margins - Voc pode definir as margens das pginas 7- No frame - Label size - Tome cuidado aqui se voc for criar as suas prprias medidas. Informe em Width = largura da etiqueta (em centmetros) e em Height = altura da etiqueta (em centmetros) 8- No frame - Gap between labels- Voc informa o espao entre uma etiqueta e outra nos sentidos horizontal e vertical. 9- Para visualizar o relatrio clique no boto Preview Report . Obs - Voce deve configurar a impressora na opo Selecione Printer Setup do menu File indicando a impressora a ser utilizada, lembrando que na configurao da impressora deve estar selecionado o tamanho do papel a ser utilizado, pois o Crystal faz a leitura do setup da impressora para formatar o relatrio.
10- No menu File selecione a opo File Set label layout e verifique se o nmero de etiquetas por pgina (number of labels) se est de acordo, pois quando voc est definindo as medidas o Crystal no atualiza este campo. Se estiver ok, continue em frente seno altere as medidas at encontrar o nmero correto. Volte para a tela padro do relatrio. 11- Ao visualizar o relatrio voc tem acesso somente rea esquerda do relatrio (como se fosse uma etiqueta). Os campos devem estar na ordem que voc quer que apaream na etiqueta. Feito isto selecione preview e verifique se a pgina est aparecendo corretamente (porm lembre-se que WYSIWYG (What you see is what you get) no funciona no Crystal Reports). O que voc est vendo pode no ser exatamente o que voc ter.
Bem a esta altura s falta imprimir e verificar , ajustando quando necessrio. Se voc tiver problemas vamos ver alguns pontos que devem ser verificados. a) Se voc estiver usando o driver Genrico/Texto , verifique se voc colocou mas medidas corretas do papel e ainda se est configurado para com ou sem quebra de pgina. b) O tipo de fonte utilizado tambm influi no resultado final (Usar a fonte-padro da impressora pode aumentar a velocidade) c)Se puder, mande imprimir em impressora laser ou jato de tinta que o resultado dever ser melhor. d)Verifique ainda a verso que voc est usando do Crystal Reports.
"J est disponvel no Brasil a funo que ir permitir os usurios Crystal Reports a imprimir valores por extenso em portugus, isto possvel atravs da CRXLATE.DLL (16 Bits) ou da CRXLAT32.DLL (32 Bits), para se fazer o extenso, basta copiar a DLL correspondente ao seu ambiente no lugar da DLL que tm o mesmo nome desta, ela deve estar localizado ou no \WINDOWS\SYSTEM ou no \WINDOWS\CRYSTAL. Aps feito isto, basta entrar no Crystal, criar uma frmula e usar a funo ToWords(nmero). Qualquer dvida, contate o Suporte Crystal." Download da verso 16 bits da DLL de extenso em portugus (CRXLATE.DLL) Download da verso 32 bits da DLL de extenso em portugus (CRXLAT32.DLL)
ExtPor16.exe ExtPor32.exe
alguma destas configuraes no for suportada pela impressora do cliente, o relatrio ir usar as Propriedades Padro da impressora do cliente. A melhor regra a seguir : Se voc estiver querendo forar o tipo de papel, fonte de papel (bandejas) ou orientao de pgina na impressora do cliente, ento SEMPRE DEIXE NO CHECADA a caixa Propriedades Padro.
7-Usando as funes de converses de dados no Crystal . O Crystal fornece algumas funes para converso de dados. Vejamos as mais usadas.(Para ver todas leia o Help )
ToNumber(x) : Converte um texto informado no argumento x em um nmero. Voc geralmente usa esta funo quando quer converter um campo definido como texto para um formato numrico. Por exemplo: ToNumber("45.21") retornar o nmero 45,21 ToNumber("123.45") = 123.45 ToNumber({file.AcctNo}/2) = 22144 ToNumber({file.ZIP}) < 33333 = TRUE para {file.AcctNo} = 44288 para {file.ZIP} = 21385
ToText(x) : Converte o nmero x para o formato texto ToText(12345) retornar "12345" e ToText(45.21) retornar "45" ToText(x,n) : Converte o nmero x para o formato texto usando n casas decimais. Assim temos: ToText(12345.6789,2) retornar "12345,68" "12346" e ToText(12345.6789,0) retornar
A funo arrendonda o nmero conforme o numero de casas decimais definido. ToWords(x): Converte um nmero informado no argumento x num texto por extenso ( em ingls :-( ) ToWords(12345) retornar twelve thousand three hundred fortyfive and ToWords(x,n): Converte um nmero informado no argumento x usando n casas decimais num texto por extenso. ToWords(12345.5000,0) retornar twelve thousand three hundred forty six ( observe o arredondamento) NumericText(x): Verifica se o contedo do argumento x , um texto , um nmero. Se o contedo for um nmero a expresso retornada ser YES caso contrrio ser NO. Assim: NumericText({file.Reference}) = NO NumericText({file.IDNUM}) = YES para {file.Reference} = "ABCDEFG" para {file.IDNUM} = "12345"
NumericText ({file.IDNUM} [1 to 5]) = YES para {file.IDNUM} = "12345443" NumericText({file.IDNUM}) = NO para {file.IDNUM} = "12345T"
Agora as datas do seu relatrio sero transformadas em strings no formato "YYYY/MM/DD hh:mm:ss" E da ( voc deve estar se pergurtando !!! ) . Bem agora basta voc extrair a hora usando a funo de substring do Crystal: Assim:
{Tabela.hora}[12 to 16] - Isto ir extrair os dados a partir daa posio 12 at a 16 . Justamente a hora no formato hh:mm. 11 - Extraindo subcadeias de strings/campos no Crystal Reports ?
O crystal Reports possui o operador subscript que permite a extrao de subcadeias de strings da mesma forma que a funo Mid$. Sua sintaxe a seguinte:
x[n]
onde: x a string ou campo e n o nmero da posio na string que desejamos extrair Assim: "Visual Basic"[1] seja , a letra V "Visual Basic"[8] obtm a primeira letra da cadeia Visual Basic , ou
retorna a letra B
O operador admite tambm a seguinte sintaxe: x[n to m] Ex: onde extraimos uma subcadeia de x iniciada em n e terminada em m
O operador pode ser utilizado para extrair partes dos campos das tabelas de um banco de dados . Assim para uma tabela chamada clientes onde temos o campo nome armazenando o nome do cliente podemos fazer: {Clientes.Nome}[1 to 20] cliente armazenado => isto extrair os 20 primeiros caracteres do nome do
Se quisermos imprimir somente os clientes cujo nome iniciem com a letra A , podemos fazer: if {Clientes.Nome}[1]="A" then {Clientes.Nome} else ...
Este um velho e (des) conhecido problema para quem usa o crystal reports (pelo menos nas verses mais antigas). Como posso exibir o camo cep, telefone, cgc, cpf , etc.. formatado no meu relatrio no crystal reports ? A resposta simples : Utilize as formlas do Crystal. Como ? seguir: Vamos mostrar a
Vamos supor que voc quer exibir o campo telefone que esta armazenado no seu banco de dados sem formatao ( geralmente armazenamos os campos sem formatao). Se voc inserir o campo diretamente no Crystal ele ir exibir o campo do jeito que voc armazenou :-( . Para contornar o problema vamos utilizar uma frmula para formatar o campo no padro de exibio desejado. Voc tem a tabela clientes com os campos : codigo, nome , telefone. O campo telefone armazena o cdigo de rea da cidade e o nmero do telefone da seguinte forma: CCNNNNNNNN - onde CC o cdigo de rea da cidade e NNNNNNNN o nmero do telefone . Voc tem os seguinte valores armazenados para este campo: 1196701212 e 1702245521. Voc quer exibir o telefone no relatrio no seguinte formato: 11-96701212 e 17-0224-5521. Se voc usar o campo diretamente no Crystal ir obter o seguinte:
Vamos usar uma frmula para exibir o campo no relatrio no formato desejado. Carregue o relatrio no Crystal e no Menu Insert selecione Formula Field Informe o nome para a frmula e clique em OK Agora usando o operador subscript vamos separar as subcadeias desejadas e montar a cadeia no formato desejado. A frmula fica assim: {socios.TELEFONE}[1 to 2] + "-" + {socios.TELEFONE}[3 to 6] + "-" + {socios.TELEFONE}[7 to 10]
Clique no boto Accept e insira a frmula no local desejado. Veja o resultado final:
Dependendo do seu campo a frmula ser diferente mas a maneira sempre a mesma. (Eu estou usando a verso 4.6 do Crystal Reports)
Sintaxe: PrinterName [form.]Report.PrinterName[= PrinterName$] "Epson LQ850" Define a impressora Epson LQ850 Sintaxe: PrinterDriver [form.]Report.PrinterDriver[= DriverName$] "Epson24.drv"
Ex: Report1.PrinterName=
Ex: Report1.PrinterDriver =
Define o driver da impressora para Epson24.drv Sintaxe:PrinterPort [form.]Report.PrinterPort[= PortName$] "LPT1" Define a porta LPT1
Veja um exemplo de cdigo para fazer este servio : CrystalReport1.PrinterPort = "LPT1" CrystalReport1.PrinterDriver = "Epson24.drv" CrystalReport1.PrinterDriver = "Epson LQ850" CrystalReport1.action = 1
Ex: Report1.PrinterPort=
Contedo
Introduo:Gerando os seus relatrios com o Crystal Reports. Criando um novo relatrio. Agrupando e ordenando registros. Inserindo ttulos e Legendas. Formatao de campos, campos especiais e desenho de linhas e caixas. Trabalhando com frmulas. Determinando o estilo e inserindo uma figura em seu relatrio. Imprimindo o relatrio a partir de sua aplicao no Visual Basic.
do
Junto com o Visual Basic 5.0 distribuda a verso 4.6 do Crystal Reports.
Contedo
1- Campos a serem impressos : sobrenome , endereo e a data de nascimento. 2- O relatrio dever ser ordenado pelo campo sobrenome. 3- Deveremos permitir inicialmente a visualizao do relatrio para posterior impresso. 4- O nome do relatrio ser agenda.rpt.
Selecionando a opo New do menu File teremos a tela da figura 1.0 abaixo:
figura 1.0
Aps selecionar o boto Standard , devemos selecionar a base de dados na opo Data File , para o nosso caso Controle.mdb.
A seguir temos um lista de todas as tabelas e consultas gravadas na base de dados - exclua todos os elementos da lista , exceto a tabela Agenda e clique no boto Next para prosseguir.
Como nosso relatrio esta baseado somente na tabela Agenda, o prximo passo Links , pode ser dispensado, portanto clique novamente no boto Next.
Vamos selecionar os campos da tabela que sero impressos no relatrio selecione cada campo e clique no boto Add. Ao final devemos ter algo parecido com a figura 2.0 abaixo:
figura 2.0
A esta altura o relatrio esta praticamente terminado , para visualiz-lo clique no boto Preview Report. mostrada a tela da figura 3.0 onde aps clicarmos na aba Design podemos notar cinco sees:
figura 3.0
- para o ttulo da aplicao. - contm os elementos do cabealho da pgina. - contm os campos de dados a serem impressos. - refere-se ao rodap da pgina. - impresso de resumos.
Contedo
Contedo
Pelo menu podemos acessar as opes pertinentes a um determinado campo do relatrio. Para o caso selecionamos o ttulo Agenda Pessoal , vamos alterar a fonte (Change Font...) para 14 e o estilo para negrito. Para alterar mais de um campo selecione-os mantendo a tecla Shift pressionada.
figura 5.0
Aproveitando vamos inserir um campo referente a data no canto superior esquerdo. Selecione a opo Special Field... do menu Insert escolha a opo Print Date e posicione no local indicado. Clique com o boto direito do mouse sobre o campo nascimento e selecione a opo Change Format... escolhendo o formato DMY (dia-ms-ano) e clique OK. Finalmente vamos desenhar um retngulo ao redor do ttulo. Selecione a opo Box do Menu Insert , note que o ponteiro do mouse mudou para um lpis: Desenhe o retngulo ao redor do ttulo mantendo o boto esquerdo do mouse pressionado. Se quiser colorir o retngulo clique com o boto direito do mouse sobre o mesmo e preencha-o com uma cor de sua escolha. Atravs do menu Insert podemos desenhar linhas, retngulos, quadrados , alm de inserir figuras e at grficos em nossos relatrios. Podemos tambm usar os cones correspondentes da barra de ferramentas como na figura 6.0 abaixo:
figura 6.0
Contedo
atravs do cone
Aps isso voc deve informar o nome da frmula no campo Formula Name para o nosso caso informe "pagina" e clique no boto OK. O Editor mostrado na figura 7.0 :
figura 7.0
Agora basta digitar a frmula na caixa Formula Text, vamos l, digite: "Pgina: " + e, a seguir selecione a funo TrimLeft na lista Functions; , ainda na lista Functions, selecione a funo ToText e finalmente selecione o item PageNumber no final da lista Functions. Ao final deveremos ter o seguinte na caixa Formula Text: "Pgina: " + TrimLeft (ToText (PageNumber, 0 ) ) A funo PageNumber retorna um valor nmerico do nmero da pgina por isso usamos a funo ToText para convert-la em uma string , e a seguir usamos a funo TrimLeft para removermos os espaos a direita. Vamos verificar a frmula clicando no boto Check , se tudo estiver correto o crystal informa com a mensagem No errors found indicando que a sintaxe est correta. Agora basta clicar no boto Accept e posicionar a frmula no canto esquerdo da seo Page Footer.
Encerrado o relatrio basta salv-lo atravs da opo Save do menu File e informar o nome para o relatrio.(Nosso caso informa agenda). Devemos ressaltar que a linguagem de frmulas do Crystal Reports diferente do Visual Basic , assim por exemplo , se usarmos a propriedade SelectionFormula do Crystal que permite definir condies para a impresso em nosso relatrio de forma a imprimir somente os nomes iniciados pela letra "J" teramos algo como: CrystalReport1.SelectionFormula = "{AGENDA.NOME} >= " & "''" & "J" & "''" Note que a refrencia a campos da tabela feita entre chaves ({}).
Contedo
figura 8.0
Para isto selecione um dos estilos na caixa de listagem style e veja direita o jeito do relatrio. Se quiser pode inserir uma figura no relatrio clicando no boto Add Picture...
com o cone. A caixa de texto Title lhe permite inserir o ttulo para o relatrio.
Contedo
A seguir vamos definir algumas propriedades para o controle CrystalReport1 1-CopiesToPrinter (1) 2-Destination em arquivo. Informe 3-ReportFileName ser impresso. 4-WindowTitle 5-SortFields Determina o nmero de cpias do relatrio.Informe um Direciona a impresso: 0-na tela 1-na impressora 2zero (0). Indica a localizao do relatrio (arquivo .RPT) a Ttulo a janela Preview , informe Agenda . Configura a ordem de classificao.(Ver abaixo.)
Finalmente crie um boto de comando no formulrio que ir disparar a impresso do relatrio com o nome de Imprime e a seguir associe o seguinte cdigo ao boto de comando:
Private Sub imprime_Click() CrystalReport1.Destination = 0 CrystalReport1.ReportFileName = "c:\Controle\agenda.rpt" CrystalReport1.SortFields(0) = "+{Agenda.Sobrenome}" CrystalReport1.Action = 1 End Sub
A propriedade Action definida para 1 dispara a impresso do relatrio. Outra forma de ordenar os registros via cdigo utilizar a propriedade sortfields. Na propriedade Sortfields , "+{Agenda.Sobrenome}" , indica que a ordem de impresso ser por campo sobrenome (Agenda.sobrenome) e em ordem ascendente (+).
Contedo Retorna
Contedo
Introduo:Gerando os seus relatrios com o Crystal Reports. Criando um novo relatrio. Agrupando e ordenando registros. Inserindo ttulos e Legendas. Formatao de campos, campos especiais e desenho de linhas e caixas. Trabalhando com frmulas. Determinando o estilo e inserindo uma figura em seu relatrio. Imprimindo o relatrio a partir de sua aplicao no Visual Basic.
do
Junto com o Visual Basic 5.0 distribuda a verso 4.6 do Crystal Reports.
Contedo
1- Campos a serem impressos : sobrenome , endereo e a data de nascimento. 2- O relatrio dever ser ordenado pelo campo sobrenome. 3- Deveremos permitir inicialmente a visualizao do relatrio para posterior impresso. 4- O nome do relatrio ser agenda.rpt.
Selecionando a opo New do menu File teremos a tela da figura 1.0 abaixo:
figura 1.0
Aps selecionar o boto Standard , devemos selecionar a base de dados na opo Data File , para o nosso caso Controle.mdb.
A seguir temos um lista de todas as tabelas e consultas gravadas na base de dados - exclua todos os elementos da lista , exceto a tabela Agenda e clique no boto Next para prosseguir.
Como nosso relatrio esta baseado somente na tabela Agenda, o prximo passo Links , pode ser dispensado, portanto clique novamente no boto Next.
Vamos selecionar os campos da tabela que sero impressos no relatrio selecione cada campo e clique no boto Add. Ao final devemos ter algo parecido com a figura 2.0 abaixo:
figura 2.0
A esta altura o relatrio esta praticamente terminado , para visualiz-lo clique no boto Preview Report. mostrada a tela da figura 3.0 onde aps clicarmos na aba Design podemos notar cinco sees:
figura 3.0
- para o ttulo da aplicao. - contm os elementos do cabealho da pgina. - contm os campos de dados a serem impressos. - refere-se ao rodap da pgina. - impresso de resumos.
Contedo
Contedo
Pelo menu podemos acessar as opes pertinentes a um determinado campo do relatrio. Para o caso selecionamos o ttulo Agenda Pessoal , vamos alterar a fonte (Change Font...) para 14 e o estilo para negrito. Para alterar mais de um campo selecione-os mantendo a tecla Shift pressionada.
figura 5.0
Aproveitando vamos inserir um campo referente a data no canto superior esquerdo. Selecione a opo Special Field... do menu Insert escolha a opo Print Date e posicione no local indicado. Clique com o boto direito do mouse sobre o campo nascimento e selecione a opo Change Format... escolhendo o formato DMY (dia-ms-ano) e clique OK. Finalmente vamos desenhar um retngulo ao redor do ttulo. Selecione a opo Box do Menu Insert , note que o ponteiro do mouse mudou para um lpis: Desenhe o retngulo ao redor do ttulo mantendo o boto esquerdo do mouse pressionado. Se quiser colorir o retngulo clique com o boto direito do mouse sobre o mesmo e preencha-o com uma cor de sua escolha. Atravs do menu Insert podemos desenhar linhas, retngulos, quadrados , alm de inserir figuras e at grficos em nossos relatrios. Podemos tambm usar os cones correspondentes da barra de ferramentas como na figura 6.0 abaixo:
figura 6.0
Contedo
atravs do cone
Aps isso voc deve informar o nome da frmula no campo Formula Name para o nosso caso informe "pagina" e clique no boto OK. O Editor mostrado na figura 7.0 :
figura 7.0
Agora basta digitar a frmula na caixa Formula Text, vamos l, digite: "Pgina: " + e, a seguir selecione a funo TrimLeft na lista Functions; , ainda na lista Functions, selecione a funo ToText e finalmente selecione o item PageNumber no final da lista Functions. Ao final deveremos ter o seguinte na caixa Formula Text: "Pgina: " + TrimLeft (ToText (PageNumber, 0 ) ) A funo PageNumber retorna um valor nmerico do nmero da pgina por isso usamos a funo ToText para convert-la em uma string , e a seguir usamos a funo TrimLeft para removermos os espaos a direita. Vamos verificar a frmula clicando no boto Check , se tudo estiver correto o crystal informa com a mensagem No errors found indicando que a sintaxe est correta. Agora basta clicar no boto Accept e posicionar a frmula no canto esquerdo da seo Page Footer.
Encerrado o relatrio basta salv-lo atravs da opo Save do menu File e informar o nome para o relatrio.(Nosso caso informa agenda). Devemos ressaltar que a linguagem de frmulas do Crystal Reports diferente do Visual Basic , assim por exemplo , se usarmos a propriedade SelectionFormula do Crystal que permite definir condies para a impresso em nosso relatrio de forma a imprimir somente os nomes iniciados pela letra "J" teramos algo como: CrystalReport1.SelectionFormula = "{AGENDA.NOME} >= " & "''" & "J" & "''" Note que a refrencia a campos da tabela feita entre chaves ({}).
Contedo
figura 8.0
Para isto selecione um dos estilos na caixa de listagem style e veja direita o jeito do relatrio. Se quiser pode inserir uma figura no relatrio clicando no boto Add Picture...
com o cone. A caixa de texto Title lhe permite inserir o ttulo para o relatrio.
Contedo
A seguir vamos definir algumas propriedades para o controle CrystalReport1 1-CopiesToPrinter (1) 2-Destination em arquivo. Informe 3-ReportFileName ser impresso. 4-WindowTitle 5-SortFields Determina o nmero de cpias do relatrio.Informe um Direciona a impresso: 0-na tela 1-na impressora 2zero (0). Indica a localizao do relatrio (arquivo .RPT) a Ttulo a janela Preview , informe Agenda . Configura a ordem de classificao.(Ver abaixo.)
Finalmente crie um boto de comando no formulrio que ir disparar a impresso do relatrio com o nome de Imprime e a seguir associe o seguinte cdigo ao boto de comando:
Private Sub imprime_Click() CrystalReport1.Destination = 0 CrystalReport1.ReportFileName = "c:\Controle\agenda.rpt" CrystalReport1.SortFields(0) = "+{Agenda.Sobrenome}" CrystalReport1.Action = 1 End Sub
A propriedade Action definida para 1 dispara a impresso do relatrio. Outra forma de ordenar os registros via cdigo utilizar a propriedade sortfields. Na propriedade Sortfields , "+{Agenda.Sobrenome}" , indica que a ordem de impresso ser por campo sobrenome (Agenda.sobrenome) e em ordem ascendente (+).