23 de julio de 2009
Nuevo Grupo para desarrolladores de WaveMaker Hispano
Aqui esta el link: http://groups.google.com.bo/group/wavemaker-hispano?hl=es
Colaboren!!!!
Un saludo y espero comentarios
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:
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.
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
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
el post es
http://dev.wavemaker.com/forums/?q=node/2713#comment-8656
y su proyecto esta en
http://dev.wavemaker.com/forums/files/JasperReports.zip
la base de datos esta en
http://dev.wavemaker.com/forums/files/JasperInsert.txt
http://dev.wavemaker.com/forums/files/jaspercreate.txt
http://dev.wavemaker.com/forums/?q=node/2713#comment-8656
y su proyecto esta en
http://dev.wavemaker.com/forums/files/JasperReports.zip
la base de datos esta en
http://dev.wavemaker.com/forums/files/JasperInsert.txt
http://dev.wavemaker.com/forums/files/jaspercreate.txt
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
14 de noviembre de 2008
Mensaje para la informar error de clave unica
El error...duplicate key violates unique constraint....en la BD PostgreSQL se puede manejar con el evento onError del liveForm...para que se informa al usuario lo que esta pasando durante el proceso. Aqui les pongo un ejemplo de este proceso.
liveForm1Error: function(inSender, inError) {
//PARA CONTROLAR QUE NO SE REPITA
if(inError.toString().split("Error: ERROR: duplicate key violates unique constraint").length==2){
window.alert("La especialidad ya existe!!! \n Por favor Ingrese nuevos datos.");
}
}
liveForm1Error: function(inSender, inError) {
//PARA CONTROLAR QUE NO SE REPITA
if(inError.toString().split("Error: ERROR: duplicate key violates unique constraint").length==2){
window.alert("La especialidad ya existe!!! \n Por favor Ingrese nuevos datos.");
}
}
31 de octubre de 2008
Añadir por defecto en el lookup editor
Hola les comento que pude lograr añadir un objecto... en este caso de tipo Persona a un lookup editor en el liveForm ligado a un liveView o sea un liveForm con lookup relaciones......
simplemente en el evento begin insert se coloca la relacion:
liveForm1BeginInsert: function(inSender) {
this.personaLookupEditor1.setValue("dataValue",this.serviceVariablePersona.getData());
},
this.serviceVariablePersona.getData() es un service call de tipo Personas
ademas se tiene que poner disabled al lookup editor personaLookupEditor1..nada mas
y por lo tanto sin configurar nada mas este se pone por defecto
simplemente en el evento begin insert se coloca la relacion:
liveForm1BeginInsert: function(inSender) {
this.personaLookupEditor1.setValue("dataValue",this.serviceVariablePersona.getData());
},
this.serviceVariablePersona.getData() es un service call de tipo Personas
ademas se tiene que poner disabled al lookup editor personaLookupEditor1..nada mas
y por lo tanto sin configurar nada mas este se pone por defecto
9 de septiembre de 2008
Hacer Nuevo item desde el related panel
Este proyecto hecho en PostgreSQL muestro como hacer un insert desde el related panel... por medio de un dialogo.
Si seleccionamos la opcion "nuevo item" en el related editor(un select editor cargado con informacion relacional) . podemos observar que se abre un dialogo para poder llenar nuestra informacion que nos falta en esta lista principal de items.
Esto es lo que basicamente realiza la mini aplicacion.
Para una mejor comprensio explicare algunos puntos no comunes que tiene este aplicacion.
!) insertar en la tabla una fila en el primer registro O en el id y "Nuevo NombreEntidad" en Nombre
por ejemplo
id_categoria | nombre |
=================
0 | Nueva Categoria
1 | aaaaa
2 | bbbbb
3 | ccccc
...
2) En la pagina que vas a aplicar estos propiedades
Esto es para asociar el evento onclick con el dialogo
dojo.declare("PageProducts", wm.Page, {
start: function() {
this.connect(app.pageDialog.domNode,"click", this, "click");
},
click: function(e) {
.....
},
_end: 0
});
esto es para filtrar el evento si estas clickeando en el boton Ok o si estas cerrando el dialogo => e.target.id == "app_pageDialog"
pageDialog
click: function(e) {
if(e.target.id == "app_pageDialog"){
....
}
},
esto es para actualizar el nuevo valor en el related editor: this.categoryLookupEditor1.update();
cortersia de Ed Callahan...the ingeniero WM ..
click: function(e) {
if(e.target.id == "app_pageDialog"){
this.categoryLookupEditor1.update();
}
}
Nada mas espero que pueda ser ayuda :)
Fuentes:
http://dev.wavemaker.com/forums/files/NewItemByDialog.zip
http://dev.wavemaker.com/forums/files/newitem.sql_.txt
http://dev.wavemaker.com/forums/files/screenshots.zip
5 de septiembre de 2008
Master Detail V2 en WM4
1)Importar la base de datos "master_detai_db"
2)Crear liveViews para el master y el detail en LiveView panel
- masterView -> seleccionar todos los checkboxes y guardar
- detailView -> seleccionar todos los checkboxes y guardar
3)En el designer
- cambiar en layoutBox la propiedad "box" : de Top_to_Botton a Left_to_Right
- en el palette añadir 2 templates "SearchListDetail" y aplicar flex en los 2
4)Crear variables
Crear 1 liveVariable para el master ->liveSource : masterView y quitarle el seleccionado a la propiedad autoUpdate
Crear 1 liveVariable para el detail ->liveSource : detailView y quitarle el seleccionado a la propiedad autoUpdate
Crear 1 variable para el actual master ->type : Master
5) Enlazar(Bind)..... master y detail con los widgets
Para el master:
- Bind dataGrid1 con el liveVariable1
- Bind liveVariable1 con el dataGrid1.selectedItem
Para el:
- Bind dataGrid2 con el liveVariable2
- Bind liveVariable2 con el dataGrid2.selectedItem
Para el actual_master:
- Bind variable1 -> dataSet -> idMaster con el liveForm1.dataOutput.idMaster
6) Filtrar el liveVariable2 para mostrar los datos del detail
- Bind detail -> master -> idMaster con el liveForm1.dataOutput.idMaster
- En el liveForm2 -> event -> OnSuccess -> liveVariable2
- En el dataGrid1 -> event -> OnSelected -> liveVariable2
7) Seleccionar el widget liveForm2 para poner el actual_master en el related panel
- Seleccionar el widget masterSalesRelatedEditor1 y cambiar la propiedad "editingMode" : de lookup a readonly
- Crear un evento en BeginInsert con javascript y colocar:
liveForm2BeginInsert: function(inSender) {
this.masterSalesRelatedEditor1.setDataSet(this.variable1);
},
8) En la funcion inicial de la pagina poner:
start: function() {
this.liveVariable1.update();
}
Fuentes:
Suscribirse a:
Entradas (Atom)