User:Erivam
IMPRESSÃO DE ETIQUETAS USANDO LAZREPORT
Por: Erivam Anselmo de Albuquerque (erivamalbuquerque@yahoo.com.br)
ALBUQUERQUE, Erivam Anselmo de.
Pré-requisitos: Lazarus v0.9.28 ou superior Componente: Zeos Access (http://wiki.freepascal.org/Zeos_tutorial/pt)
Banco de dados: MySQL 5.0
Resumo
O objetivo deste artigo é demonstrar os procedimentos para construir um formulário de relatório destinado a impressão de etiquetas ou formatos semelhantes utilizando os recursos do Lazarus.
Preparando o banco de dados
Criando uma tabela no banco de dados (Script)
CREATE TABLE `clientes` ( `ID` int(10) unsigned zerofill NOT NULL default '0000000000', `NOME` char(30) default NULL, `ENDER` char(30) default NULL, `BAIRR` char(20) default NULL, `CEP` char(10) default NULL, `CIDAD` char(25) default NULL, `ESTAD` char(2) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=FIXED;
Incluindo dados na tabela (Script)
INSERT INTO `clientes` VALUES (10,'JANEILA DE ANDRADE SILVA','C. ZBZGUA D SJ H D S KF HSDF I','TAQUARI','699000000','CARUARU','PE'); INSERT INTO `clientes` VALUES (12,'PINHEIRO DE LIMA','P.L LA I WI I WEI R UWUERIIWI','SÃO FRANCISCO','6990000000','RECIFE','PE'); INSERT INTO `clientes` VALUES (27,'CHAVES M N','R IKWUEU R IWE RU 150','BOSQUE','69909-380','JOÃO PESSOA','PB'); INSERT INTO `clientes` VALUES (29,'JOSÉ LIMA','RUA PPWEI IWEIR WEO R, 100','CENTRO','69980-000','RIO DE JANEIRO','RJ'); INSERT INTO `clientes` VALUES (31,'LUIZA B S.','AV KWE UR UW EUIR OWER','BOSQUE','69909-701','GARANHUNS','PE'); INSERT INTO `clientes` VALUES (37,'LIMA','RUA OWIUE UWE RU USH D , 455','CENTRO','69980-000','CRUZEIRO DO SUL','AC'); INSERT INTO `clientes` VALUES (41,'CARLOS C.','CJ JSDFS UFR UWE URU R IORIUG','CJ ESPERANCA','69905-250','RIO BRANCO','AC'); INSERT INTO `clientes` VALUES (49,'AUGUSTO','O WEUIR IWOE R IWIUER UYWEIRUW','BOSQUE','69908-650','MACEIO','AL');
Criando um Projeto
No menu selecione Project -> New Project
Inserir os componentes de conexão com o banco de dados
No inspetor de objetos configure os dados de conexão (Database, HostName User, Password, Protocol) com o seu banco de dados conforme exemplo: Se a confuração estviver correta já será possível ativar a conexão (Connected=True).
Configurar a propriedade Connection do ZQuery1 para Connection1.
Configure a propriedade SQL do componente ZQuery1 com a seguinte linha:
select * from clientes order by NOME
Clicar com o botão direito sobre o componente ZQuery1 e selecionar no menu Edit Fields Add Fields e selecione os campos para o relatório, clique depois no botão Create:
O resultado é:
Na guia LazReport selecione e inclua no formulário o componente rfReport e um frDBDataset
Ligue a propriedade DataSet do componente frDBDatase1 com o ZQuery1.
Ligue o frReport1 ao frDBDataSet1 através da propriedade Dataset.
Clique duas vezes sobre o componente rfReport1 para abrir o modo Designe do relatório
Selecione no menu File --> Page options , coloque a quantidade de colunas que deseja e escolha também a ordem de listagem dos registros nas colunas (por linha ou por coluna). Outras configurações podem ser realizadas na guia Paper (mudar a orientação do formulário, etc..). Clicar em OK quando concluir.
Agora vamos inserir uma Band clicando no ícole semelhante a figura
Depois clicar na parte superior do formulário
Selecione Master dada
Grave o arquivo com o nome etiquetas.lrf em uma pasta (para este exemplo a pasta é C:\TEMP)O resultado até aqui é o seguinte:
Depois no menu Tool vamos inserir os campos do no formulário de relatório
Depois no menu Tool vamos inserir os campos do no formulário de relatório selecione os campos e clique OK.
Se houver muitos campos, melhor seleciuonar um de cada vez, aqui temos que arrastar cada campo para seu lugar conforme o layout desejado.
Ou usando as teclas Ctrl+P.
Feche esta visualização e feche também o Designe do relatório. Depois do layout do relatório vamos construir a rotina que vai acionar a visualização do relatório através de um clique em um botão.
Adicionar um objeto botão no Form1 e clicar duas vezes sobre ele para digitar os comando no procedimento:
procedure TForm1.BitBtn1Click(Sender: TObject); begin ZConnection1.Connected:=true; ZQuery1.Close; ZQuery1.SQL.Clear; ZQuery1.SQL.Add('SELECT * FROM clientes ORDER BY NOME'); ZQuery1.Open; frReport1.LoadFromFile('C:\TEMP\Etiquetas.lrf'); frReport1.ShowReport; end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin ZConnection1.Connected:=true; ZQuery1.Close; ZQuery1.SQL.Clear; ZQuery1.SQL.Add('SELECT * FROM clientes ORDER BY NOME'); ZQuery1.Open; frReport1.LoadFromFile('C:\TEMP\Etiquetas.lrf'); frReport1.ShowReport; end;
A aplicação fica assim:
Clicar sobre o botão apenas uma vez para ver o relatório conforme o layout selecionado no código.
Outras possibilidades de layout: