Mostrando entradas con la etiqueta ireport. Mostrar todas las entradas
Mostrando entradas con la etiqueta ireport. Mostrar todas las entradas

28 de agosto de 2012

OFFTOPIC: Scriptlet para numeros en literal en jasperreports

Queria compartir este scriptlet, una clase java para crear funciones especificas en jasper reports, que estaba usando para un reporte en para mostrar los numeros en literal, muy utilizados en facturas.


Bueno no es un post directamente relaciondo a WaveMaker pero quize compartir para que puedan incluirlo en sus aplicaciones.

Aqui la clase en java.
import java.text.DecimalFormat; public class EnglishNumberToWords extends JRDefaultScriptlet{ private static final String[] tensNames = { "", " ten", " twenty", " thirty", " forty", " fifty", " sixty", " seventy", " eighty", " ninety" }; private static final String[] numNames = { "", " one", " two", " three", " four", " five", " six", " seven", " eight", " nine", " ten", " eleven", " twelve", " thirteen", " fourteen", " fifteen", " sixteen", " seventeen", " eighteen", " nineteen" }; private static String convertLessThanOneThousand(int number) { String soFar; if (number % 100 < 20){ soFar = numNames[number % 100]; number /= 100; } else { soFar = numNames[number % 10]; number /= 10; soFar = tensNames[number % 10] + soFar; number /= 10; } if (number == 0) return soFar; return numNames[number] + " hundred" + soFar; } public static String convert(long number) { // 0 to 999 999 999 999 if (number == 0) { return "zero"; } String snumber = Long.toString(number); // pad with "0" String mask = "000000000000"; DecimalFormat df = new DecimalFormat(mask); snumber = df.format(number); // XXXnnnnnnnnn int billions = Integer.parseInt(snumber.substring(0,3)); // nnnXXXnnnnnn int millions = Integer.parseInt(snumber.substring(3,6)); // nnnnnnXXXnnn int hundredThousands = Integer.parseInt(snumber.substring(6,9)); // nnnnnnnnnXXX int thousands = Integer.parseInt(snumber.substring(9,12)); String tradBillions; switch (billions) { case 0: tradBillions = ""; break; case 1 : tradBillions = convertLessThanOneThousand(billions) + " billion "; break; default : tradBillions = convertLessThanOneThousand(billions) + " billion "; } String result = tradBillions; String tradMillions; switch (millions) { case 0: tradMillions = ""; break; case 1 : tradMillions = convertLessThanOneThousand(millions) + " million "; break; default : tradMillions = convertLessThanOneThousand(millions) + " million "; } result = result + tradMillions; String tradHundredThousands; switch (hundredThousands) { case 0: tradHundredThousands = ""; break; case 1 : tradHundredThousands = "one thousand "; break; default : tradHundredThousands = convertLessThanOneThousand(hundredThousands) + " thousand "; } result = result + tradHundredThousands; String tradThousand; tradThousand = convertLessThanOneThousand(thousands); result = result + tradThousand; // remove extra spaces! return result.replaceAll("^\\s+", "").replaceAll("\\b\\s{2,}\\b", " "); } }
y desde el ireport podemos usar este scriptlet.




Espero que les sirva.

6 de septiembre de 2010

JasperReports 3.6 Development Cookbook: Excelente libro de JasperReports



Revisando un poco por la web encontré este libro:JasperReports 3.6 Development Cookbook de Bilal Siddiqui muy grafico que tiene buenos ejemplos para el desarrollo de reportes con jasperreports y lo mejor de todo esto que trae codigo fuente para descargar y probar los ejemplos.

Los topicos mas interesantes que me gustaron hablan de como aplicar: Enhancing the Look and Feel of your Report ya que me ayudo a cambiar mis reportes basicos. Tambien Working with a Variety of Data Sources ya que almenos usaba solamente la conexion con la base de datos y ahora vamos a poder usar mas alternativas de fuente de datos.Finalemente en el capitulo 7 un tema pendiente es el manejo de Designing a crosstab—a table with dynamic rows and columns me va a ayudar bastante.


Desde esta empresa lo podes comprar Packtpub y aqui esta el enlace del libro:
https://www.packtpub.com/jasperreports-3-5-2-development-cookbook/book

12 de agosto de 2010

Ejemplo Completo de JasperReports en Wavemaker

Hola amigos les quiero compartir un proyecto de ejemplo de :
Exportacion de archivos a diferentes formatos.
Uso de imagenes como parametro.
Impresion de reportes con window.print
Uso de iframe para vista previa

Creado con la version 3.7.4 de ireport.

Agradezco la colaboracion de Christian Scolari de Argentina por iniciar este proyecto
y dejarlo compartir con la comunidad.

Aqui esta el proyecto.
http://dev.wavemaker.com/screencasts/Reports.zip

Aqui esta un backup de la base de datos en mysql


CREATE DATABASE `banco`
CHARACTER SET `latin1`
COLLATE `latin1_swedish_ci`;

USE `banco`;

/* Tables */
CREATE TABLE `personas` (
`id_persona` int AUTO_INCREMENT NOT NULL,
`nombre` varchar(20),
`apellido` varchar(20),
`telefono` int,
PRIMARY KEY (`id_persona`)
) ENGINE = MyISAM;

/* Data for table "personas" */
INSERT INTO `personas` (`id_persona`, `nombre`, `apellido`, `telefono`) VALUES (1, 'Manuel', 'Rodriguez', 132);
INSERT INTO `personas` (`id_persona`, `nombre`, `apellido`, `telefono`) VALUES (3, 'Luis', 'Torrez', 222);
INSERT INTO `personas` (`id_persona`, `nombre`, `apellido`, `telefono`) VALUES (4, 'NUEVO', '123', 123);
COMMIT;

23 de noviembre de 2009

Librerias necesarias para Reportes con Irepor 3.6

La version de Ireport 3.6 presenta una libreria adicional para que realizes tus reportes..es groovy
ahora puede utilizar los temas que tiene esta buenisima...
Esta es la lista de librerias para jasper..

commons-digester-1.7.jar
groovy-all-1.5.5.jar
iText-2.1.0.jar
jasperreports-3.6.0.jar
jasperreports-extensions-3.5.3.jar

20 de noviembre de 2009

JasperReports con DownloadResponse

Version mejorada de Reportes en Jasper devolviendo con DownloadResponse para llamarlo desde una url


import com.*;
import org.hibernate.Session;
import com.wavemaker.runtime.RuntimeAccess;
import com.wavemaker.runtime.server.DownloadResponse;
import java.net.URL;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
import org.springframework.mail.javamail.ConfigurableMimeFileTypeMap;

public class GeneradorReporte extends com.wavemaker.runtime.javaservice.JavaServiceSuperClass {
public DownloadResponse getReport() throws Exception {
DownloadResponse ret=new DownloadResponse();
ConfigurableMimeFileTypeMap mimeFileTypeMap = new ConfigurableMimeFileTypeMap();
try {
//para recoger la conexion de la base de datos
Dbescolar service = (Dbescolar) RuntimeAccess.getInstance().getService(Dbescolar.class);
service.begin();
Session session = service.getDataServiceManager().getSession();
//para enviar parametros al reporte
/*Map parameters = new HashMap();
parameters.put("id_facultad",new Integer(id_facultad));
parameters.put("facultad",facultad);*/
//mi direccion del archivo de jasper
URL fileUrl = this.getClass().getResource("mirepo.jasper");
//para cargar el jasper
JasperReport report2 = (JasperReport)JRLoader.loadObject(fileUrl);

//para cargar: la conexion de la base de datos al reporte, parametros y el archivo jasper
JasperPrint jasperPrint = JasperFillManager.fillReport(report2,null,session.connection());
//exportar el proyecto a PDF
ByteArrayOutputStream out = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, out);
//para cargar el PDF como un respuesta de descarga
ret.setContentType(mimeFileTypeMap.getContentType("mirepo.pdf"));
ret.setContents(new ByteArrayInputStream(out.toByteArray()));
ret.setFileName("mirepo.pdf");
} catch (Exception e) {
e.printStackTrace();
}
return ret;
}

}


y lo puede llamar con el link
"services/GeneradorReporte.download?method=getReport"

y en tu navegador seria
http://localhost:8094/miproyecto/services/GeneradorReporte.download?method=getReport


Espero que les sirva




17 de septiembre de 2009

Nuevo Servicio de Java para Reporte

Aqui mejore un poco el servicio de java para reporte
espero q les sirva!!

import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

import java.util.*;
import java.io.*;
import java.net.URL;
import org.hibernate.Session;
import com.*;
import com.wavemaker.runtime.RuntimeAccess;

public class ReportGenerator {

public void getReport(String urlReporte,int param1,String param2) throws Exception {
try {
//para traer la conexion del servicio de base de datos
MiServicioBD service = (MiServicioBD) RuntimeAccess.getInstance().getService(MiServicioBD.class);
service.begin();
Session session = service.getDataServiceManager().getSession();

Map parameters = new HashMap();
parameters.put("param1",new Integer(param1));
parameters.put("param2",param2);

//buscando el jasper
URL fileUrl = this.getClass().getResource(urlReporte+".jrxml");
JasperDesign jasperDesign = JRXmlLoader.load(fileUrl.openStream());
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, session.connection());

//copiando el reporte a la carpeta pdf que esta adentro de webapproot
String camino[]=(getClass().getResource("/").toString()).split("nombre_de_tu_proyecto");
System.out.println("camino"+camino[0]);
JasperExportManager.exportReportToPdfFile(jasperPrint,camino[0].replaceAll("file:/","")+"nombre_de_tu_proyecto/webapproot/pdf/"+urlReporte+".pdf");

} catch (Exception e) {
e.printStackTrace();
}

}//fin metodo getReport

}//fin clase


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
luego desde la vista solo tienes que abrir despues que se ejecute el serviceVariable

serviceVariable3Success: function(inSender, inData) {
window.open("pdf/elecciones1.pdf");
},

31 de enero de 2009

Jasper Reports en WaveMaker

Algunos tips para realizar reportes en WaveMaker sobre Windows.
Para poder integrar JasperReports a tu aplicacion debes añadir en tu proyecto algunas librerias de jasper, las mas basicas son:
  • commons-digester-1.7.jar
  • itext-1.3.1.jar
  • jasperreports-3.0.0.jar
  • jasperreports-extensions-1.3.1.jar
En mi caso estas librerias las saque del IReport pero las versiones pueden ser diferentes.

Esto se debe hacer en la siguiente direccion: WaveMaker\Projects\EnNombreDeTuProyecto\lib

Luego podras crear tu java service para poder interactuar tu jrxml diseñado en mi caso con IReport.

Aqui mi java service para poder ver las conexiones y mi reporte exportado en PDF.


public class ReportGenerator {

public void getReport(String urlReporte,int nro) throws Exception {

Connection conn = null;
String url = "jdbc:postgresql://localhost:5432/";
String dbName = "tester";
String driver = "org.postgresql.Driver";
String userName = "postgres";
String password = "123456";
try {
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url+dbName,userName,password);

Map parameters = new HashMap();
String par=String.valueOf(nro);
parameters.put("cod_pedido",new String(par));

URL fileUrl = this.getClass().getResource(urlReporte+".jrxml");
JasperDesign jasperDesign = JRXmlLoader.load(fileUrl.openStream());
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, conn);

JasperExportManager.exportReportToPdfFile(jasperPrint, "c:\\Documents and Settings\\usuario\\Mis documentos\\WaveMaker\\Projects\\ElNombreDeTuProyecto\\webapproot\\images\\"+urlReporte+".pdf");

} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (conn != null) {
conn.close();
}
} catch(Exception e) {
}
}
}
Lugo obvimente te creas un serviceVariable enlazando con el java service anterior

Aqui lo importante, direcciono el reporte en PDF en una carpeta del proyecto

JasperExportManager.exportReportToPdfFile(jasperPrint, "c:\\Documents and Settings\\usuario\\Mis documentos\\WaveMaker\\Projects\\ElNombreDeTuProyecto\\webapproot\\images\\"+urlReporte+".pdf");


Y luego puedo abrirlo con un evento por ejemplo pulsando un boton.

imprimirEntregaSuccess: function(inSender, inData) {
window.open("images/mi_reporte.pdf");
},


Eso es todo espero ver muchos proyectos con jasper.

25 de diciembre de 2008

Haciendo Reportes con jasper en WaveMaker


Gracias al amigo rganwgar quien puso su proyecto hecho con mysql pudo ver como integrar jasper reports y wavemaker

Espero que puedan integrar jasper para generar reportes y
presentaciones directas para imprimir.

En los proximos dias hare un ejemplo pero con la base de datos Postgresql

Hasta la proxima ...Felices Fiestas para todos..

Mavirroco

Mis cosas

Powered By Blogger