miércoles, 11 de diciembre de 2013

Obtener el texto de un option en Reporting Services y mediante WEB SERVICES

Una vez tenemos nuestro ensamblado con los web services en sql (Ver post
Consumir Web Services de Navision desde Reporting Services), vamos a utilizarlo para transformar los campos options en el valor de texto correspondiente. Para eso utilizamos una funcion en navision que le paso una tabla y un campo y nos devuelve una lista de las opciones separadas por coma.Me he creado una función llamada ObtenerWS que le paso un id y un texto.

El id 1 me devuelve los options de la tabla y el campo deseado (En el ejemplo Tabla 50045 campo 3).

Con la funcion StringSplit lo transformo en una tabla:
 

SELECT *

FROM StringSplit(([NAVSQL].[dbo].[ObtenerWS] (1,'50045|3')), ',', null)

 

El resultado del select anterior es este:


 

 
 
 
Esto lo pongo en un report como Dataset aparte.

Luego hago la consulta normal (A la Tabla 50045) en otro Dataset que me devuelve el campo option como integer. Para transformarlo al valor de texto en la casilla en vez de poner el campo option como integer, hay que poner lo siguiente:

=Lookup(Fields!Concepto.Value,Fields!ID.Value,Fields!NOMBRE.Value,"Concepto")

 

Donde:

Fields!Concepto.Value = El campo option en integer.

Fields!ID.Value = Al campo option en integer en el dataset de la lista de options

Fields!NOMBRE.Value = Al campo String que contiene la descripcion del option en el dataset de la lista de options

"Concepto" = El nombre del Dataset de apoyo.

Y listo. Asi solo llamas a los web services una vez (Para cargar la tabla de options) y no para cada uno de los resultados.

No hay comentarios:

Publicar un comentario