Uso de querys desde sql server en dynamics NAV

18.01.2014 18:10
 

 

El uso de sql server sobre las tablas de dynamics NAV aumenta enormemente las posibilidades analíticas sobre los datos subyacentes al facilitar el uso de herramientas de Business intelligence como SSAS y SSRS además de las propias del lenguaje T-SQL.

A continuación vemos un ejemplo sencillo de como lanzar una query simple:

Nos conectamos a SSMS y desde alli abrimos la base de datos de dynamics:

desde aqui entramos la siguiente query:

SELECT [No_], [Name], [Address], [City], [County], [Post Code]
FROM [CRONUS USA, Inc_$Customer]
WHERE [No_] = '10000'

Esta es una consulta SQL sencilla que se compone de tres partes básicas . La primera es la línea SELECT, que indica al sistema los nombres de los campos que queremos recuperar. Rodeamos los nombres de los campos con corchetes, [], para evitar errores si coinciden  con una palabra clave reservada o un espacio. Hay que destacar  también que en  NAV el número de cliente se almacena en un campo denominado "No" , pero en SQL Server nos referimos por " No_ " .
La segunda línea indica la tabla de donde queremos obtener los campos, en este caso la tabla lcustomer. Aquí se puede ver que no nos limitamos a entrar desde [ Customer ] . En SQL Server, las tablas se nombran en un formato como este: “Company $ table” . con algunas excepciones.
Cualquier tabla que tenga la propiedad DataPerCompany establecida en No, no contendrá el prefijo Company $ en el nombre de la tabla.

La última es la cláusula WHERE.
Esto es lo mismo que el filtrado en NAV. En este caso, sólo queremos recuperar el número de cliente 10.000.
Esta consulta sería equivalente al siguiente código NAV :


CustomerRec.SETRANGE("No.", '10000');

IF CustomerRec.FINDFIRST THEN;

EL resultado que deberiamos ver en sql server seria :