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

Definir Posição De Impressão No Qreport(RESOLVIDO)


Arlon

Pergunta

Acredito que não há como fazer o que vou perguntar, mas não custa nada, olhem que parada sinistra:

Eu imprimo um relatório da tabela ITENS, vamos supor que eu tenha 10 itens para imprimir. Até aí tudo bem, eu consigo imprimir. O problema começa agora, caso o cliente volte e inclua mais 5 itens eu terei que imprimir agora esses 5 itens, sendo que eu não posso imprimir os outros 10 já impressos anteriormente. Esses 5 novos itens deverão ser impressos na mesma folha onde foram impressos os 10 primeiros. Os problemas são os seguintes: existe alguma forma de marcar na Query que estão esses itens, apenas os 5 itens qua ainda não foram impressos (ou seja, fazer uma espécie de CheckBox na Query, quer dizer na verdade no DBgrid e imprimir os registros que estiveram "Checkados"?) Outro problema: como informar a posição no relatório onde esses registros serão impressos, já que não serão impressos no início do relatório e sim no final dos 10 itens já impressos?

Sinistro né!? Mas fui claro??

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Olá Arlon! bez ae? wink.gif

Pensei numa forma de fazer isso e acredito que seja possível sim.

Pra isso sua tabela teria que ter um campo pra informa quais itens já foram impresso, tipo assim, um campo com um nome "IMPRESSO" por exemplo, ae usaria uma query e toda vez que que voce imprimisse o relatório dava um Update nos itens impressos, preenchendo esse campo(IMPRESSO) com um valor "S" (Sim) por exemplo.

com relação e sua outra pergunta:

como informar a posição no relatório onde esses registros serão impressos

Dadia pra fazer isso se você usar QRLabel em vez de usar os QRDBEdit's.

usando os QRLabel's pra receber os valores dos campos da tabela.

Ex: no Evento OnPrint do QRLabel coloca tipo assim:

if QueryItens.FieldByName('Impresso').AsString = 'S' Then
   Value := ''
else
   Value := QueryItens.FieldByName('codigo').AsString;

e isso você usa em todos QRLabel's mudando só o campo da tabela tipo assim:

-------

  Value := QueryItens.FieldByName('descricao').AsString;

-------

  Value := FormatFloat('0.00',QueryItens.FieldByName('valor').AsFloat);

-------

  Ect, etc, etc...

Paresse ser meio maluca essa ideia mas funciona.

Eu uso muito o QRLabel na minhas aplicações.

Se você se interessar por essa ideia maluca posta ae, falou!!! biggrin.gif

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0

Deixa ver se entendi...

Terei que usar QrLabel ao invés de QrDBText (o certo é QrDBText e não QrDBEdit como você disse), assim colocarei na posição exata pra impressão, já que não sei a partir de que item vou ter que imprimir de novo.

Bem, se for isso, acho que dá pra fazer, valeu pela ajuda. Devo tentar amanhã, aí volto pra dizer no que deu.

e no caso não seria

if QueryItens.FieldByName('Impresso').AsString = 'S' Then
  Value := ''
else
  Value := QueryItens.FieldByName('codigo').AsString;
e sim if QueryItens.FieldByName('Impresso').AsString = 'S' Then Caption := '' else Caption := QueryItens.FieldByName('codigo').AsString;

Bem, a idéia pode ser maluca, mas parece que funciona. Que seria de nós programadores se não tivessemos idéias malucas não é mesmo.

Link para o comentário
Compartilhar em outros sites

  • 0

e no caso não seria

if QueryItens.FieldByName('Impresso').AsString = 'S' Then
  Value := ''
else
  Value := QueryItens.FieldByName('codigo').AsString;
e sim if QueryItens.FieldByName('Impresso').AsString = 'S' Then Caption := '' else   Caption := QueryItens.FieldByName('codigo').AsString;

Não Arlon!

Nesse caso seria o Value mesmo.

Ok! wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Até dá pra fazer desta forma, mas eis que me surge mais um problema: o máximo de lihas que eu posso imprimir por folha são 22, ficando mais ou menos assim:

QrLabel1 ------ QrLabel2 ------- QrLabel3 ------- QrLabel4

QrLabel5 ------ QrLabel6 ------- QrLabel7 ------- QrLabel8

QrLabel9 ------ QrLabel10 ------ QrLabel11 ------ QrLabel12

.

.

.

QrLabelxx ------ QrLabelxx ------- QrLabelxx ------- QrLabelxx <--- LINHA 22

O problema é o seguinte: quando passar pra segunda folha os textos dos QrLabels serão sobrepostos. Acho que não existe nenhuma forma de se fazer isso que eu quero.

Link para o comentário
Compartilhar em outros sites

  • 0

QrLabel1 ------ QrLabel2 ------- QrLabel3 ------- QrLabel4

QrLabel5 ------ QrLabel6 ------- QrLabel7 ------- QrLabel8

QrLabel9 ------ QrLabel10 ------ QrLabel11 ------ QrLabel12

.

.

.

QrLabelxx ------ QrLabelxx ------- QrLabelxx ------- QrLabelxx <--- LINHA 22

Bom, num foi dessa forma que tava pensando Arlon. unsure.gif

vamos supor que no seu relatório sera exibido esses campos da tabela:

CODIGO | DESCRICAO | QUANTIDADE | VALOR

você só irá usar um QRLabel pra cada campo:

QRLabel1 | QRLabel2 | QRLabel3 | QRLabel4

esses QRLabels, deverar ficar dentro de um QRBand -->> BandType: rbDetail

com isso os mesmo QRLabels vão receber os valores dos campos da tabela, linha a linha:

---------

---------

---------

---------

e não haverar problemas com as páginas seguintes.

Não sei se você me entendeu.

posta ae falow!!! wink.gif

Abs.

Link para o comentário
Compartilhar em outros sites

  • 0

Resolvido galera, era uma parada boba, boba. A solução era usar QrLabel ao invés de QrDBText como o Program-Amador falou. Depois criar um campo na tabela com o nome de "Imprimir", por exemplo e atribuir os valores "Sim" (caso queira imprimir) ou "não" (caso não queira, lembre-se de colocar sem til, pois o SQL não faz pesqisas em strings acentuadas), e depois disso colocar um código mais ou menos assim:

if DM.QrRelatItens.FieldByName('Imprimir').AsString = 'não' Then begin

QRLabel8.Caption := '';

QRLabel9.Caption := '';

QRLabel10.Caption := '';

QRLabel11.Caption := '';

end;

if DM.QrRelatItens.FieldByName('Imprimir').AsString = 'Sim' Then begin

QRLabel8.Caption := DM.QrRelatItens.FieldByName('LOTE').AsString;

QRLabel9.Caption := DM.QrRelatItens.FieldByName('ITEM').AsString;

QRLabel10.Caption := DM.QrRelatItens.FieldByName('DESCRICAO').AsString;

QRLabel11.Caption := DM.QrRelatItens.FieldByName('preço').AsString;

end;

Obrigado Program-Profissional!!

Huheuhaeueahuehahaue tongue.gif

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...