jueves, 5 de marzo de 2015

ejemplo funcion lookup reporting services

para poder comparar la información dentro de dos bases de datos diferentes sin tener que utilizar un stored procedure en alguna de las dos bases de datos se puede utilizar La función LOOKUP.

esta función es muy buena cuando necesitas por ejemplo de una base enlazar a la información de otra base de datos.

la sintaxis es la siguiente:

Lookup(source_expression, destination_expression, result_expression, dataset)
Sus parámetros corresponden:


source_expression
(Variant) Una expresión que se evalúa en el ámbito actual y que especifica el nombre o la clave que se buscará. Por ejemplo, =Fields!ProdID.Value.
destination_expression
(Variant) Una expresión que se evalúa para cada fila de un conjunto de datos y que especifica el nombre o la clave que se hará coincidir. Por ejemplo, =Fields!ProductID.Value.
result_expression
(Variant) Una expresión que se evalúa para la fila del conjunto de datos donde source_expression = destination_expression y que especifica el valor que se recuperará. Por ejemplo, =Fields!ProductName.Value.
dataset
Una constante que especifica el nombre de un conjunto de datos del informe. Por ejemplo, "Productos".

 el ejemplo es que cuando quiero comparar las ventas que extraigo de una base de datos ajena a la base de datos contable quiero comparar que todo sea correcto.

las líneas blancas y las líneas rojas son diferentes bases de datos, los dataset están del lado izquierdo.

de hecho comparo tres bases de datos, para esto también verifico el scope o el agrupado del matrix de cada uno de ellos.
las expresiones quedan así.

=IIF(Fields!empresa.Value="CD0",Lookup(Fields!Tienda.Value,Fields!TIENDA.Value, Fields!DocTotalFC.Value, "cadacad"),Lookup(Fields!Tienda.Value,Fields!TIENDA.Value,Fields!DocTotalFC.Value, "cajaadv"))

en mi primer nivel esta la empresa, en el segundo es es la tienda.

Me funciono perfecto únicamente que ya a nivel de detalle tendría que tener otra consulta para hacerlo línea por línea el lookup.


Espero que este ejemplo le pueda servir a alguien.