jueves, 31 de octubre de 2013

Crear un calendario en SQL

Para crear un calendario en sql que muestre todos los dias entre dos fechas he creado la siguiente funcion: CREATE
FUNCTION [dbo].[CALENDARIO]

(


-- Add the parameters for the function here

@fIni smalldatetime

,@fFin smalldatetime

)


RETURNS
@MyCalendario TABLE (FECHA smalldatetime)

BEGIN

DECLARE @d tinyint

SET @d = 0

WHILE @fIni <= @fFin

BEGIN

INSERT INTO @MyCalendario VALUES (@fIni)

SET @fIni = DATEADD(d, 1, @fIni)

END

RETURN

END

GO


Para hacer uso de ella es de la siguiente manera:
 SELECT *FROM[dbo].[CALENDARIO] ('01/01/13','31/12/13')  CALENDARIO

jueves, 24 de octubre de 2013

Consumir Web Services de Navision desde Reporting Services parte 2

Puedes consultar las partes anteriores aquí:
parte 1
Lo siguiente que hay que hacer, es publicar el WEB service de Navision. Esto es muy sencillo realizarlo desde Navision y con unos sencillos pasos lo podemos completar.
Creamos primero nuestra CodeUnit llamada InterfaceWS:
 Creamos dentro de la CodeUnit una funcion llamada ConsultaExterna donde le pasamos un código y un texto (Por ejemplo):
 En la Tabla 2000000076 Web Service publicamos nuestra CodeUnit:
 Quedando tal que así:

En el próximo post crearemos la dll con Visual Studio 2010 para consumir este web service.

miércoles, 16 de octubre de 2013

Consumir Web Services de Navision desde Reporting Services


Algunas veces para realizar informes que muestren algún dato calculado de Navision, se da la enorme complejidad de cómo sacar el dato. Te planteas la necesidad de facilitar el trabajo a la hora de consultarlo. Mediante los WEB Services que expone Navision y el CLR que se integra en SQL podemos realizar informes en reporting services que consultan datos preparados por Navision.
La documentación es abundante sobre este tema, pero aquí pretendemos aglutinarla toda para tener un decálogo a seguir para crear-configurar y consumir los web services desde SQL.


Lo primero que hay que hacer es averiguar el FRAMEWORK que tenemos en nuestro servidor de SQL.
Para ello, ejecutamos la siguiente consulta:
--AVERIGUAR FRAMEWORK
select * from sys.dm_clr_properties
Una vez tenemos la versión del FRAMEWORK, hay que habilitar el servidor para que use la integración CLR. Por defecto, cuando se instala el SQL server, viene con esta opción deshabilitada, por lo que es casi seguro que tendrás que habilitarla:
--HABILITAR LA INTEGRACION CLR
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
Ahora indicaremos al servidor  que la instancia de SQL Server confía en la base de datos y en su contenido mediante TRUSTWORTHY
--PONER COMO QUE CONFIA
ALTER DATABASE miDataBase
SET TRUSTWORTHY ON


Con esto hemos preparado la Base de Datos para que pueda trabajar con CLR . En próximos posts veremos como crear la dll, anexar el ensamblado a sql y utilizar nuestro ensamblado.

miércoles, 9 de octubre de 2013

Poner código HTML en una casilla de Reporting Services

Si queremos introducir por alguna necesidad código HTML en una casilla de valor de reporting services es muy sencillo y ampliamente documentado. Pero de manera tonta, no era capaz de seguir las instrucciones de la documentación para acceder al menú desde donde se puede.

Por eso, este post es una ayuda visual  de como se hace por si alguien se ha sentido frustado intentando hacerlo cuando es muy sencillo.
 
 
Lo primero que hay que hacer es seleccionar la casilla:

 
Con la casilla seleccionada, seleccionar el texto que contiene (Esta es la parte clave que no conseguia hacer):



 
Con el texto seleccionado, boton de la derecha y seleccionamos Propiedades del marcador de posición:

 
En Tipo de Marcado seleccionamos la segunda opcion que es HTML: interpretar etiquetas HTML como estilos.

 
En Valor escribimos el código HTML. Por ejemplo, con el marcador <br> creamos un código que genera en una casilla una línea que pone PRIMERA LÍNEA y otra línea con SEGUNDA LINEA:


"PRIMERA LÍNEA"&"<br>"&"SEGUNDA LINEA"




miércoles, 2 de octubre de 2013

Mostrar en Reporting Services un parametro MultiValue

Se puede dar el caso que deseamos mostrar los valores seleccionados en un paramero de valor múltiple.Podríamos hacerlo con una tabla pero lo que vamos a ver en este post es como hacerlo en un cuadro de texto.
Pongamos que tenemos un DataSet con una lista de empresas y queremos mostrar la lista de las empresas seleccionadas en un cuadro de texto, una detras de otra separadas por un guión.
El DataSet lo llamamos ListaDeEmpresas.
El DataSet tiene un parámetro llamado NOMBRE con el nombre de la empresa.
El parámetro multi valor se llama EMPRESA.
En el cuadro de texto pondríamos lo siguiente:
=iif(Parameters!EMPRESA.Count = count(Fields!NOMBRE.Value, "LisaDeEmpresas"),"All",Join(Parameters!EMPRESA.Value,","))