Ireports

De nuevo^^,
Estoy haciendo reportes con el ireport en una página web dinámica con jsp y mysql.
Hago el reporte bien con todos los capos y todo va bien por ahora .
Mi pregunta es si se podría poner en el title o page head el nombre del usuario que inicio sesión en la web y la fecha actual.
¿Es posible hacer esto?

1 respuesta

Respuesta
1
Si se puede, solo tienes que agregar dos parámetros, uno para la fecha y otro para el usuario y lo colocas donde quieras insertarlo, luego a la hora de llamarlo le seteas los valores por un Map de parámetros, de la siguiente formaSi se puede, solo tienes que agregar dos parámetros, uno para la fecha y otro para el usuario y lo colocas donde quieras insertarlo, luego a la hora de llamarlo le seteas los valores por un Map de parámetros, de la siguiente forma
Parámetros en el jasper
$P{usuario}
$P{fecha}
Envio y llamado del reporte desde java
Map parameters = new HashMap();
parameters.put("usuario",txtUsuario);
parameters.put("fecha",Calendar.getInstance().toString());
//Preparacion del reporte (en esta etapa llena el diseño de reporte)
//Reporte diseñado y compilado con iReport
JasperPrint jasperPrint = JasperFillManager.fillReport(fileName,parameters,conexion);
//Se lanza el Viewer de Jasper, no termina aplicación al salir
JasperViewer jviewer = new JasperViewer(jasperPrint,false);
jviewer.show();
Hola gracias por responder^^
Um no estoy muy enterado de los parámetros que me decís, mira este es el código que uso para los reports:
Este es el jsp que hace correr el reporte en la web:
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="com.dato.HandlerDB" %>
<%
try {
HandlerDB conexion = new HandlerDB();
conexion.openConnection();
File reportFile = new File(application.getRealPath("/reportes/RDeudas.jasper"));
Map parameters = new HashMap();
parameters.put("Parametro1", "valor");
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, conexion.getConnection());
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
} catch(Exception ex ) {}
%>
...........................
Este es el jsp del login del usuario
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost/db_taxi_control";
String user = "root";
String pasw = "ninew@passwOOrd0";
Connection db;
String xcod = request.getParameter("xcod");
String xcla = request.getParameter("xcla");
String sql = "select count(*) from t_administrador where usuario='" + ------>este es el usuario que va imprimir el reporte
xcod + "' and password='" + xcla + "'";
System.out.println(sql);
try{
Class.forName(driver);
db = DriverManager.getConnection( url, user, pasw );
Statement stmt = db.createStatement();
ResultSet rs = stmt.executeQuery(sql);
rs.next();
int xcant = Integer.parseInt( (String)rs.getString(1) );
rs.close();
stmt.close();
db.close();
if (xcant >0) {
session.setAttribute( "codigo", xcod );
session.setAttribute( "clave" , xcla );
response.sendRedirect( "/JLBYR2/inicio.jsp");
}
else
response.sendRedirect("/JLBYR2/error_acceso.html");
}catch(ClassNotFoundException e1){
e1.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
%>
¿En qué parte de los dos códigos debo de insertar los parámetros que me decís?, de antemano gracias por responder ^^.
Aquí:
Map parameters = new HashMap();
parameters.put("Parametro1", "valor");
parameters.put("Parametro2", "session.getAttribute("codigo")");
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), parameters, conexion.getConnection());
Hola gracias me funciono lo del usuario lo que me parece genial ^^
Solo falta la fecha, mira puse este código que me indicaste en fecha:
parameters.put("fecha",Calendar.getInstance().toString());
Y lo que imprime es: java. Útil.Gregorian. ¿Calendar je je me falto poner algo?
Gracias de nuevo .
Esto te devuelve la fecha de hoy
Calendar hoy = Calendar.getInstance();
parameters.put("fecha",hoy.get(Calendar.DAY_OF_MONTH)+"/"+(hoy.get(Calendar.MONTH)+1)+"/"+hoy.get(Calendar.YEAR));

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas