Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Imprimir Etiquetas no QuickReport


Recife

Pergunta

Oi pessoal,

Estou precisando imprimir etiquetas, em uma rotina de um sistema que estou desenvolvendo. Utilizo Delphi 7, BD Firebird 1.5.

Os dados das etiquetas são conseguidos de uma setença SQL através de uma query, onde filtro clientes por data de aniversário(informado pelo usuário - dia do nascimento / mes do nascimento).

Coloquei um QRExprMemo dentro de uma band Detail. Porém, quando existe mais de um cliente o primeiro registro sai certo, o segundo registro sai no final da página da primeira coluna, o terceiro irá sair na primeira linha da segunda coluna(obs: dividi o quick em duas colunas) o quarto sai no final da pagina da segunda coluna e assim sucessivamente.

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Quando você define colunas no quickreport, ele faz a impressão uma coluna de cada vez, ou seja, imprime as bandas configuradas primeiro na coluna mais à esquerda até que encontre o fim da página, para depois passar a próxima coluna, começando novamente na parte superior e assim por diante, até concluir as colunas e avançar para outra página e começar tudo denovo.

Muito provavelmente as bandas que você criou ocupam metade da página, ou o suficiente para que não caiba uma terceira etiqueta em uma coluna, motivo pelo qual você está vendo apenas 4 etiquetas em uma página.

Seria isto o que ocorre?

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --rochawil --

Olá, estou elaborando um relatório de etiqueta em qreport e me deparei com o fato de

imprimir uma coluna de cada vez, como citado na resposta acima..

bom, gostaria de saber se existe uma maneira de evitar isso, tipo.. definir o tamanho da

página como sendo de uma etiqueta e cancelar o avanço de página do qreport, já que a

folha é por tracionador mesmo rsss..

bom, só queria saber se é possível.. ou se alguém conseguiu imprimir as duas colunas de uma vez

Grato

William

Link para o comentário
Compartilhar em outros sites

  • 0
Quando você define colunas no quickreport, ele faz a impressão uma coluna de cada vez, ou seja, imprime as bandas configuradas primeiro na coluna mais à esquerda até que encontre o fim da página, para depois passar a próxima coluna, começando novamente na parte superior e assim por diante, até concluir as colunas e avançar para outra página e começar tudo denovo.

Muito provavelmente as bandas que você criou ocupam metade da página, ou o suficiente para que não caiba uma terceira etiqueta em uma coluna, motivo pelo qual você está vendo apenas 4 etiquetas em uma página.

Seria isto o que ocorre?

Micheus,

é exatamente isto. dividi o qreport em duas colunas, coloquei uma band detail e dentro da bando um qrexprmemo. Quando rodo e chamo este relatório, apresenta o primeiro registro na primeira fila da coluna, o segundo registro no final da fila da coluna, o terceiro na primeira fila da segunda coluna, o quarto registro no final da fila da segunda colunda. dai, passa-se para uma nova pagina e segue-se a mesma rotina descrita. Não sei como resolver este problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Felipee, acho que esta não é exatamente a questão do colega Recife.

A questão a que ele parece referir-se é sobre como imprimir as etiquetas, da esquerda para a direita, e de cima para baixo.

Sendo que utilizando impressão em coluna, o quick realiza a impressão de cima para baixo da esquerda para a direita.

Foi neste sentido que pedi confirmação.

Bom, supondo que realmente seja isto, o único meio de contornar isto no Quick Report, é controlando a impressão na mão. É algo que pode ser meio chato, mas funciona muito bem.

Segue anexo um exemplo que ilustra a impressão de etiquetas de tamanho pequeno e em 3 colunas.

A idéia básica é:

- mantemos a propriedade Page.Columns = 1 no QuickRep;

- ajustamos as margens de acordo com o papel a ser utilizado;

- adicionamos uma banda do tipo Detail, e ajustamos sua altura de acordo com as necessidades;

- nesta banda, colocamos QRlabels (ou o que você quiser, mas que não seja data-aware, como QRDBText), posicionados em forma de coluna. Estes componentes devem ser nomeados de modo a incluir no seu nome o nº da coluna - isso traz benefícios;

- a propriedade DataSet do QuickRep deve ser mantida nula. O dataset será manipulado no evento OnNeedData;

- no evento BeforePrint do QuickRep posicionamos o dataset no início (First);

- no evento BeforePrint da banda, inicializamos os labels (ou outros componentes) e para cada coluna, avançamos o dataset (Next);

Bom, e ver o exemplo para perceber que é mais complicado explicar do que fazer.

Abraços

Editado por Micheus
Removido anexo, pois foi colocado no post mais abaixo após corrigido.
Link para o comentário
Compartilhar em outros sites

  • 0

Micheus, obrigado pela sua resposta.

Porém não conseguir rodar o projeto que você postou, não estou conseguindo o caminho para o databasename.Aparece a seguinte mesangem:Database Engine Error. Invalid directory. Directory: C:\Teste.DB

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus, obrigado pela sua resposta.

Porém não conseguir rodar o projeto que você postou, não estou conseguindo o caminho para o databasename.Aparece a seguinte mesangem:Database Engine Error. Invalid directory. Directory: C:\Teste.DB

esta mensagem está meio estranha. Eu baixei o arquivo, descompactei em uma pasta, compilei, executei e realmente há um erro mas pela falta do arquivo Teste.MB (conteúdo de memo) - esqueci dele, desculpem-me. :ph34r:

Vai denovo ele completo com um executável também.

Ao ser iniciado, o programa troca a origem de dados para o local do programa, então tudo deve estar na mesma pasta.

Abraços

Impressao_Etiquetas.zip

Link para o comentário
Compartilhar em outros sites

  • 0
Só tenho à agradecer pela solução, conseguir fazer rodar a rotina no sistema como uma luva.

Problema Resolvido

Que bom.

Caso haja necessidade, você pode adaptar este relatório para poder informar a partir de qual etiqueta começar a impressão - definir linha x coluna.

Isto é interessante quando suas etiquetas não preenchem toda a folha e você pode, então, começar a impressão a partir da próxima etiqueta disponível no papel (folha ou formulário).

Nesta situação, você armazena em uma variável (digamos, QtdPular), private ao form, o resultado da operação Linha*Coluna = etiquetas a pular. Então, utilizando outra variável (também private ao form, suponha QtdPulada), você inicializa ela com 0 no evento BeforePrint do QuickRep e no evento BeforePrint da banda detalhe você controla quando inicializar os labels, verificando (em portugol):

...
  se QtdPulada > QtdPular então início_então
    inicializa labels com valores do dataset
  fim_então
  senão início_senão
    Inc(QtdPulada)
    inicializa labels com branco
  fim_senão

Algo mais ou menos assim.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

excelente Exemplo, funciona mais que perfeitamente ^_^ , Foi muito util, no meu caso não usei para imprimir etiquetas, mas sim para dividir somente algumas bandas em 2 partes. Se colocarmos a opção Coluns do QReport para 2 ele divide todas as Details, e eu precisava que fosse misto, e o Ex. serviu como uma luva. ;)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...