GARANTIR DESCONTO

Fórum Etiquetas com writeln #355348

13/03/2008

0

Eu estou tentando imprimir etiquetas para formulário contínuo, tentei no QReport, mas eu configuro tudo certinho, tamanho da DetailBand e o tamanho da página, mas se eu mando imprimir um número maior que 48 etiquetas, (cada página das etiquetas tem 24 etiquetas, duas colunas de 12)na última ele corta as duas últimas linhas da última etiqueta, eu estou utilizando um código assim
Writeln(Extr, ´Nome: ´  +zquery1.fields[0].asstring );
Writeln(Extr, ´End: ´    +Zquery1.fields[1].asstring);
Writeln(Extr, ´CEP.: ´    +Zquery1.Fields[2].AsString);
Writeln(Extr, ´TEL: ´  +ZQuery1.Fields[3].AsString);

Gostaria que as etiquetas ficassem assim
Nome--------------------------------------| Nome--------------------------------- End---------------------------------------- | End----------------------------------- CEP----------------------------------------|TEL------------------------------------

Que com os dados ficaria assim
Cliente1-------------------------------------Cliente2 Rua um--------------------------------------Rua dois 89400----------------------------------------89400

Aí iria para a próxima etiqueta, então, seria mais ou menos isso, imprimir dados em duas colunas, só que a Query teria que ter um Next quando for para a segunda coluna,e outro quando fosse passar para a linha de baixo,mas não estou sabendo como fazer isso.


Taraciuk

Taraciuk

Responder

Posts

14/03/2008

Wanderok

Ao clicar em ´IMPRIMIR ETIQUETAS´, faça os seguintes passos:

1) Crie uma tabela temporária com o layout desejado:

ETIQUETA_TEMP
ETEMP_CLIENTE1
ETEMP_ENDERECO1
ETEMP_CEP1
ETEMP_TEL1
ETEMP_CLIENTE2
ETEMP_ENDERECO2
ETEMP_CEP2
ETEMP_TEL2

2) agora faz assim:
query1.open; // seus dados para etiqueta já filtrados como deseja
while not query1.eof do
begin
// pegar os dados da primeira etiqueta da linha
vCLIENTE1 := zquery1.fields[0].asstring;
vENDERECO1 := Zquery1.fields[1].asstring;
vCEP1 := Zquery1.Fields[2].AsString;
vTEL1 := ZQuery1.Fields[3].AsString;

// ir para o prox cliente
query1.next;
if not query1.eof then
begin
vCLIENTE2 := zquery1.fields[0].asstring;
vENDERECO2 := Zquery1.fields[1].asstring;
vCEP2 := Zquery1.Fields[2].AsString;
vTEL2 := ZQuery1.Fields[3].AsString;
end
else
begin
vCLIENTE2 := ´´;
vENDERECO2 := ´´;
vCEP2 := ´´;
vTEL2 := ´´;
end;

// inserir os dados da primeira etiqueta da linha

INSERT INTO ETIQUETA_TEMP....
// primeira etiqueta da linha do formulario
ETEMP_CLIENTE1 := vCLIENTE1;
ETEMP_ENDERECO1 := vENDERECO1;
ETEMP_CEP1 := vCEP1;
ETEMP_TEL1 := vTEL1;
// segunda etiqueta da linha do formulario
ETEMP_CLIENTE2 := vCLIENTE2;
ETEMP_ENDERECO2 := vENDERECO2;
ETEMP_CEP2 := vCEP2;
ETEMP_TEL2 := vTEL2;
// proximo cliente (observe q pego 2 em 2 clientes)
query1.next;
endo;

// neste ponto tenho uma tabela temporaria com 2 clientes por linha,
// o que é exatamente o formato do seu formulario de etiquetas

// agora basta ler sequencialmente os registros da tab temp e imprimir
query1 (SELECT * FROM ETIQUETA_TEMP)
while not query1.eof
begin
// 1a linha das 2 etiquetas
write(´lpt1´,ETEMP_CLIENTE1);
write(´lpt1´,´ ´ ); // espaco entre colunas de etiqueta
writeln(´lpt1´, ETEMP_CLIENTE2);

// 2a linha das 2 etiquetas
write(´lpt1´,ETEMP_ENDERECO1);
write(´lpt1´,´ ´ ); // espaco entre colunas de etiqueta
writeln(´lpt1´, ETEMP_ENDERECO2);

// 3a linha das 2 etiquetas
write(´lpt1´,ETEMP_CEP1);
write(´lpt1´,´ ´ ); // espaco entre colunas de etiqueta
writeln(´lpt1´, ETEMP_CEP2);

// 4a linha das 2 etiquetas
write(´lpt1´,ETEMP_TEL1);
write(´lpt1´,´ ´ ); // espaco entre colunas de etiqueta
writeln(´lpt1´, ETEMP_TEL2);

query1.next;

end;

QUERY1.CLOSE;

// PRONTO - ETIQUETAS IMPRESSAS - 2 POR LINHA DO FORMULARIO

// SE FOREM 03, 04 OU 05 ETIQUETAS POR LINHA DO FORMULARIO,
// O PROCESSO É IDENTICO.

Qualquer coisa é só dizer.

Abraco.
Wander
(wanderok@msn.com)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar