2.2.Modificando la query de un informe para mostrar el registro que se le pasa por parámetros.
2.2.Modificando la query de un informe para mostrar el registro que se le pasa por parámetros.
Empezaremos con un ejemplo simple.
Llamaremos a un informe con un parámetro.
Utilizaremos un informe ya existente(inventTableABC), el cual filtraremos por un artículo en concreto.
Aquí podemos ver un ejemplo de como se ve sin filtro alguno.
Empezamos creando una clase de tipo controller.
Class InventTableViewController extends SRSReportRunController{}
Creamos un
método main, que nos servirá para poder llamar a nuestro informe.
En este ejemplo cogeremos el campo itemid de la inventtable para filtrar.
Este campo nos llegará junto con el registro de la inventTable por argumentos.
Éstos se le asignan a la clase con el método parmArgs.
En este ejemplo cogeremos el campo itemid de la inventtable para filtrar.
Este campo nos llegará junto con el registro de la inventTable por argumentos.
Éstos se le asignan a la clase con el método parmArgs.
Static void main(Args _args)
{
{
InventTableViewController controller = new
InventTableViewController();
;
;
controller.parmReportName(ssrsReportStr(InventTableAbc, report));
controller.parmArgs(_args);
controller.parmShowDialog(false);
controller.startOperation();
}
Nota: Para anular un método, lo haremos situándonos encima del nodo de métodos de la clase y con el botón derecho del ratón podremos anular aquellos que nos interesen.
if (inventTable.recid)
controller.parmArgs(_args);
controller.parmShowDialog(false);
controller.startOperation();
}
Y anularemos
el método prePrompModifyContract.
Nota: Para anular un método, lo haremos situándonos encima del nodo de métodos de la clase y con el botón derecho del ratón podremos anular aquellos que nos interesen.
En este
método verificaremos si nos ha llegado un registro por parámetros, en caso que
sea correcto, modificaremos la query que tiene el informe asignándole el valor
de itemId.
Protected void prePrompModifyContract()
{
Query query;
QuerybuildDataSource qbds;
InventTable inventTable;
;
inventTable = args ?
args.record() as inventTable : null;
{
query = this.getFirstQuery();
qbds = query.dataSourceTable(tablenum(InventTable));
if (qbds.findRange(fieldnum(InventTable, ItemId)))
{
qbds.findRange(fieldnum(InventTable,
ItemId)).value(InventTable.itemid);
}
else
{
qbds.addRange(fieldnum(InventTable,
itemId)).value(inventTable.itemId);
}
}
}
Para probar este ejemplo crearemos un menuItem de tipo
Action, que se llamará desde un formulario que tendrá como dataSource la tabla
inventTable.
Aquí podemos ver las propiedades del menu Ítem.
He creado este formulario de ejemplo, para probarlo y en donde se pude ver el botón.
En las propiedades del botón del formulario cambiaremos la
propiedad needsRecord a “yes” y en la
propiedad dataSource le pondremos la inventTable.
Vamos a probar nuestro ejemplo con el artículo que se ve en
la imagen.
Finalmente
tenemos nuestro informe con el registro seleccionado.
Comentarios
Publicar un comentario