Dúvida sobre ireport

9 respostas
C

Boa tarde,

precisava de repetir a impressão de um report N vezes com a mesma informação, isto é, imprimir 1 de N, 2 de N, ? N de N etiquetas com os mesmos dados.

Alguém sabe como posso fazê-lo no ireport?

Obrigada

9 Respostas

C

Tenho também um outro problema… ao ir buscar um campo data através de um select aparece-me, na criação do report oracle.sql.TIMESTAMPLTZ@(…).

Alguém sabe como ultrapassar este problema?

Obrigada…

Metaleiro

Cristina L:
Boa tarde,

precisava de repetir a impressão de um report N vezes com a mesma informação, isto é, imprimir 1 de N, 2 de N, ? N de N etiquetas com os mesmos dados.

Alguém sabe como posso fazê-lo no ireport?

Obrigada

[color=darkblue]
Existem métodos para você imprimir sem visualizar, mas todos chamam a impressora padrão, não seria melhor gerar um .pdf e fazer com que o usuário faça a opção ?

Existem dois métodos o printPages e o printPage

boolean net.sf.jasperreports.engine.JasperManager.printPages(JasperPrint arg0, int arg1, int arg2, boolean arg3)

O printPage imprime só a página especificada enquanto o printPages imprime todos as páginas , ambos vão para saída da impressora padrão.
[/color]

public void imprimirEtiqueta(Conexao conn, String data, String nome, File fileName ) {
try {
Map parametros = new HashMap();
parametros.put("DATA", data);
parametros.put("NOME", nome);

if (parametros == null)
thorw new exception("Página em branco");

JasperPrint jPrint = JasperManager.fillReport(jReport_Etiqueta, parametros, conn);
int finalPag = jPrint.getPages().size() - 1;
System.out.println("Tamanho da página " +finalPag );

JasperManager.printPages(jPrint, 0 , finalPag ,true);

parametros = null;
jPrint = null;
} catch (Exception e) {
e.printStackTrace();
}

System.gc();
}
}
Metaleiro

Cristina L:
Tenho também um outro problema… ao ir buscar um campo data através de um select aparece-me, na criação do report oracle.sql.TIMESTAMPLTZ@(…).

Alguém sabe como ultrapassar este problema?

Obrigada…

[color=darkblue] Poderia enviar o erro completo ? mas pelo que sei é um erro de formatação de data que você está tentando enviar para base[/color]

C

Metaleiro:
Cristina L:
Tenho também um outro problema… ao ir buscar um campo data através de um select aparece-me, na criação do report oracle.sql.TIMESTAMPLTZ@(…).

Alguém sabe como ultrapassar este problema?

Obrigada…

[color=darkblue] Poderia enviar o erro completo ? mas pelo que sei é um erro de formatação de data que você está tentando enviar para base[/color]

Boa tarde…

Não aperece nenhum erro na criação do relatório… o único problema é que no campo onde deveria aparecer a data aparece: “oracle.sql.TIMESTAMPLTZ@9f5b19”…

C
Metaleiro:
Cristina L:
Boa tarde,

precisava de repetir a impressão de um report N vezes com a mesma informação, isto é, imprimir 1 de N, 2 de N, ? N de N etiquetas com os mesmos dados.

Alguém sabe como posso fazê-lo no ireport?

Obrigada

[color=darkblue]
Existem métodos para você imprimir sem visualizar, mas todos chamam a impressora padrão, não seria melhor gerar um .pdf e fazer com que o usuário faça a opção ?

Existem dois métodos o printPages e o printPage

boolean net.sf.jasperreports.engine.JasperManager.printPages(JasperPrint arg0, int arg1, int arg2, boolean arg3)

O printPage imprime só a página especificada enquanto o printPages imprime todos as páginas , ambos vão para saída da impressora padrão.
[/color]

public void imprimirEtiqueta(Conexao conn, String data, String nome, File fileName ) {
try {
Map parametros = new HashMap();
parametros.put("DATA", data);
parametros.put("NOME", nome);

if (parametros == null)
thorw new exception("Página em branco");

JasperPrint jPrint = JasperManager.fillReport(jReport_Etiqueta, parametros, conn);
int finalPag = jPrint.getPages().size() - 1;
System.out.println("Tamanho da página " +finalPag );

JasperManager.printPages(jPrint, 0 , finalPag ,true);

parametros = null;
jPrint = null;
} catch (Exception e) {
e.printStackTrace();
}

System.gc();
}
}

Boa tarde,

Antes de mais obrigado pela ajuda.
Vou tentar explicar um pouco melhor o que precisava de fazer... tenho um query que vai buscar à base de dados a quantidade pedida de uma determinada encomenda. Vamos supor que essa quantidade é de 5 unidades. O que preciso é que esse report que desenhei seja criado 5 vezes para que possa colocar uma etiqueta em cada unidade com a informação "unidade 1 de 5", "unidade 2 de 5",..., "unidade 5 de 5" (para numerar uso um contador).
Deverei usar os comandos que citou acima? Peço desculpa mas é a primeira vez que trabalho com ireport.... :(

Obrigada.

Metaleiro

Cristina L:
Metaleiro:
Cristina L:
Tenho também um outro problema… ao ir buscar um campo data através de um select aparece-me, na criação do report oracle.sql.TIMESTAMPLTZ@(…).

Alguém sabe como ultrapassar este problema?

Obrigada…

[color=darkblue] Poderia enviar o erro completo ? mas pelo que sei é um erro de formatação de data que você está tentando enviar para base[/color]

Boa tarde…

Não aperece nenhum erro na criação do relatório… o único problema é que no campo onde deveria aparecer a data aparece: “oracle.sql.TIMESTAMPLTZ@9f5b19”…

[color=darkblue]No caso é a formatação, você salvou na base como Timestamp e está tentando postar no relatório como Date, você pode usar algo do tipo para converter, ou simplemente fazer o mais fácil e enviar como String, algo do tipo String.valueOf(timestamp): [/color]

//Timestamp para Date
Timestamp timestamp= new Timestamp(System.currentTimeMillis());
Date data = (Date) timestamp;

//String para Date
SimpleDateFormat _format = new SimpleDateFormat("dd/MM/yyyy");
dateBegin = _format.parse(_servletRequest.getParameter("historyForm.datetime_begin"));
String _strDateBegin = new SimpleDateFormat("MM/dd/yyyy").format(dateBegin);

//usando Date:
Date dataAtual = new Date();
Timestamp t = new Timestamp(dataAtual.getTime());

//usando Calendar:
Calendar c = Calendar.getInstance(new Locale("pt","BR"));
c.set(2006, 5-1, 19); // assinatura do metodo: set(ano, mes-1, dia);
Timestamp t = new Timestamp(c.getTimeInMillis());
Metaleiro

iReport: relatório com mais de uma página

C
Metaleiro:
Cristina L:
Metaleiro:
Cristina L:
Tenho também um outro problema... ao ir buscar um campo data através de um select aparece-me, na criação do report oracle.sql.TIMESTAMPLTZ@(...).

Alguém sabe como ultrapassar este problema?

Obrigada...

[color=darkblue] Poderia enviar o erro completo ? mas pelo que sei é um erro de formatação de data que você está tentando enviar para base[/color]

Boa tarde...

Não aperece nenhum erro na criação do relatório... o único problema é que no campo onde deveria aparecer a data aparece: "oracle.sql.TIMESTAMPLTZ@9f5b19"...

[color=darkblue]No caso é a formatação, você salvou na base como Timestamp e está tentando postar no relatório como Date, você pode usar algo do tipo para converter, ou simplemente fazer o mais fácil e enviar como String, algo do tipo String.valueOf(timestamp): [/color]

//Timestamp para Date
Timestamp timestamp= new Timestamp(System.currentTimeMillis());
Date data = (Date) timestamp;

//String para Date
SimpleDateFormat _format = new SimpleDateFormat("dd/MM/yyyy");
dateBegin = _format.parse(_servletRequest.getParameter("historyForm.datetime_begin"));
String _strDateBegin = new SimpleDateFormat("MM/dd/yyyy").format(dateBegin);

//usando Date:
Date dataAtual = new Date();
Timestamp t = new Timestamp(dataAtual.getTime());

//usando Calendar:
Calendar c = Calendar.getInstance(new Locale("pt","BR"));
c.set(2006, 5-1, 19); // assinatura do metodo: set(ano, mes-1, dia);
Timestamp t = new Timestamp(c.getTimeInMillis());

Tentei fazer duas das coisas que sugeriu... tentando:

String.valueOf($F{ORDER_HEADER_ORDER_DATE}) continua a contecer-me o mesmo... no campo aparece oracle.sql.TIMESTAMPLTZ@...

new Timestamp(System.currentTimeMillis($F{ORDER_HEADER_ORDER_DATE})) dá o erro:
"it.businesslogic.ireport.gui.logpane.ProblemItem@15bbb25 The method currentTimeMillis() in the type System is not applicable for the arguments (TIMESTAMPLTZ) Line 215, Column 55 /jasperReport/detail[1]/band[1]/textField[5]/textFieldExpression[1]" e
"it.businesslogic.ireport.gui.logpane.ProblemItem@128050e Timestamp cannot be resolved to a type Line 215, Column 55 /jasperReport/detail[1]/band[1]/textField[5]/textFieldExpression[1]"

não sei se sou eu que estou a cometer algum erro ou se o problema está em ser TIMESTAMPLTZ e não TIMESTAMP...

Metaleiro

[color=darkblue] Não entendi esse ponto :[/color]

String.valueOf($F{ORDER_HEADER_ORDER_DATE})

[color=darkblue] Você está tentando alterar a variavel dentro do IReport ? nesse caso não irá funcionar, você tem que enviar um variável já formatada.

Nesse caso recomendo o seguinte, primeiro você tem que debugar o programa e ver como o valor está indo para o .jasper.

Depois que você fizer isso você tem que fazer a conversão para o valor correto, no caso teste o seguinte o mais simples primeiro

Envie um valor do tipo String (Formatado)
Receba em seu relatório um valor do tipo String

Depois você coloca a variável correta[/color]

Criado 16 de julho de 2009
Ultima resposta 16 de jul. de 2009
Respostas 9
Participantes 2