Recentemente precisei criar um relatório no iReport que seria impresso em uma folha de etiquetas.


O PROBLEMA


Existe um campo na tabela que contém a quantidade de etiquetas que o usuário quer que seja impresso do item que ele buscou. 
Precisei criar uma query para repetir a linha de acordo com o valor do campo de quantidade para enviar para o iReport apenas imprimir.

DADOS

Tabela: etiquetas
Campos usados na etiqueta:  descricao e preco_item

Query:

with rep as
 (select level as rnk
    from dual
  connect by level <= (select max(qtd)
                         from etiquetas))
select v.descricao,
       v.preco_item
  from etiquetas v,
       rep r
 where r.rnk <= v.qtd
 order by v.qtd, r.rnk;


Um Comentário

  1. É SIMPLES DE FAZER MAS TEM QUE TEM UMA TABELA QUE CHAMA T_VEZ QUE CONTÉM SOMENTE UM CAMPO NUMERO, QUE TEM NUMEROS DE 1 Á 200, ENTÃO PODE OBERSERVAR PELO SQL ABAIXO QUE É FEITA UMA PESQUISA NA TABELA T_VENDAS TEM UM CAMPO VENDAQUANTIDADE, QUE PODERIA SER QUANTAS FCHA VÃO SER IMPRESSAS,
    A PESQUISA VERIFICA SE TEM VENDAS QUANTIDADES MAIOR OU IGUAL A NUMERO, EXEMPLO SE TIVE NO CAMPO VENDAS QUANTIDADES OP NUMERO TRES ENTÃO IRA REPITIR 3 LINHAS POR QUE NO CAMPO NUMERO DA TABELA VEZ TEM NUMERO UM (MENOR), DOIS (MENOR) E TRES (IGUAL).
    SELECT * FROM T_VENDAS AS A, T_VEZ AS B WHERE A.VENDAQUANTIDADE >= B.NUMERO AND A.VENDANUMERO = ' + INTTOSTR(RESULTADO) + ' AND A.VENDAIMPRIMIR = "SIM" ORDER BY A.VENDAQUANTIDADE, A.PRODUTONUMERO

    ResponderExcluir