lunes, 2 de septiembre de 2019

Frameworks para desarrollo de aplicaciones móviles híbridas

Frameworks para desarrollo de aplicaciones móviles híbridas


El desarrollo de aplicaciones móviles mediante tecnologías web ha revolucionado el mercado del desarrollo móvil. Esto es debido a que este tipo de tecnología permite aprovechar las mejores características del desarrollo nativo, además de toda la potencia y facilidades que ofrece la tecnología web.
La tecnología híbrida nació para reducir los costes, los tiempos y facilitar el aprendizaje y desarrollo de aplicaciones móviles, aportando también la posibilidad de crear webs con estos desarrollos. Por ello podríamos decir que este tipo de aplicaciones son totalmente multiplataforma (Móvil, Tablet, Ordenador, TV…). Con el desarrollo de un código único podemos generar aplicaciones para las plataformas deseadas. En el caso de móvil, para Android e iOS.
El desarrollo de aplicaciones híbridas tiene una curva de aprendizaje mucho más suave que el desarrollo nativo. Para desarrollos nativos se requiere tener conocimientos en lenguajes de programación como son Java / Kotlin / XML para Android, y Swift / Objective-C para iOS, además de las herramientas y particularidades específicas de cada plataforma. Ello supone mayores costes al tener que contar con personal específico para Android e iOS, un aumento en el tiempo de desarrollo y tener que coordinar el diseño de modo que se asemeje lo máximo posible en ambas plataformas.
Imagen CC0 por Caspar Camille Rubin en Unsplash
Dependiendo del proyecto habrá que valorar la creación de un desarrollo nativo o híbrido, así como el tipo de tecnologías y los recursos que requiere el proyecto. El desarrollo nativo aporta una integración completa con el sistema operativo y, en cuanto a potencia, suele ser más potente a costa de más costes, tiempo, posibles errores, etc.
Para el caso de aplicaciones híbridas, será necesario disponer de ciertos conocimientos más específicos de framework o frameworks que lo componen, y esto dependerá del lenguaje en el que esté basado (JavaScript, ECMAScript, TypeScript, Dart…), además de otros conocimientos en HTML5, CSS3 (en muchos casos junto a SASS), JavaScript, así como las herramientas de Front-End utilizadas (Webpack, npm, Gulp, herramientas de testing…).
Tras esta pequeña introducción genérica a algunas de las diferencias entre aplicaciones nativas y aplicaciones híbridas, vamos ahora a repasar brevemente los frameworks más famosos para desarrollo de aplicaciones móviles híbridas; los que tienen mayor apoyo y desarrollo por parte de la comunidad. La mayoría de estos frameworks de aplicaciones híbridas que indicamos utilizan por debajo Cordova o PhoneGap para generar las aplicaciones.

PhoneGap / Apache Cordova

PhoneGap, que pertenece a Adobe Systems, permite desarrollar aplicaciones híbridas mediante tecnología web HTML5, CSS3 y JavaScript. Utiliza una API que permite acceder a elementos de hardware del sistema como la cámara, almacenamiento, acelerómetro, etc. Permite integrarse con otros frameworks como por ejemplo jQuery Mobile, etc. Apache Cordova es la versión de código abierto de PhoneGap, la principal diferencia entre estos dos frameworks es que PhoneGap tiene acceso al servicio de compilación en la nube Adobe Creative Cloud permitiendo compilar la aplicación para el sistema operativo deseado e independiente del sistema operativo donde se desarrolle. Consulta este artículo para más información sobre sus similitudes y diferencias.
Al contrario que otros frameworks mencionados más abajo que se ocupan de la parte de la interfaz, PhoneGap/Apache Cordova se encarga de la integración dentro del sistema operativo móvil y de dar acceso a los servicios de éste. Así que probablemente lo usarás junto a alguno de estos frameworks, que en muchos casos sólo ofrecen la parte de la interfaz de usuario en HTML, CSS y JavaScript.

jQuery Mobile

JQuery mobile dispone de una larga experiencia en este mundo de aplicaciones híbridas. Únicamente integra el framework jQuery basado en JavaScript. Su curva de aprendizaje es muy baja, sobre todo si ya se dispone de conocimientos de jQuery y JavaScript. Se ha quedado un poco atrás en cuanto a potencia y diseño si lo comparamos con el resto de nuevos frameworks que hay en el mercado, pero igualmente jQuery Mobile puede utilizarse en paralelo con otros frameworks de diseño como son Bootstrap, Materialize, etc.
Siempre es una buena opción para un desarrollo de la interfaz de aplicaciones híbridas, pero seguramente será necesario utilizar otra serie de librerías o plugins para mejorar su diseño o funcionalidades, dado que no contiene un diseño pensado en los estándares de diseño de las actuales plataformas móviles.

Ionic

Es uno de los frameworks más famosos para el desarrollo de aplicaciones híbridas. En sus inicios Ionic utilizaba el framework AngujarJS y PhoneGap para la parte de integración con plataformas móviles. Sin embargo, en sus últimas versiones (actualmente su última versión es Ionic 4) ha ido incorporando nuevos frameworks Front-End con los que poder desarrollar. Actualmente permite su desarrollo con los más famosos: Angular, React, Vue.JS.
Ionic integra una capa de diseño con estilos css y recursos como iconos, etc. Estos estilos pueden ser adaptados a los estándares de diseño de las plataformas Android e iOS. Otra de sus muchas ventajas es que Ionic tiene su propio IDE de desarrollo que nos facilitará el diseño y programación de aplicaciones.

React Native

React Native es un framework para crear aplicaciones híbridas que está basado en JavaScript y en un conjunto de componentes del framework ReactJS. Actualmente también es uno de los más famosos, y cuenta con una gran comunidad de desarrollo. Forma parte de aplicaciones muy potentes y conocidas, como Facebook, Pinterest, Skype o Instagram.
En el año 2018 la empresa Airbnb se vio obligada a cancelar un proyecto que estuvo desarrollando durante 2 años con React Native debido a que este framework no se encuentra maduro para proyectos de gran envergadura por muchos problemas en sus actualizaciones de versiones, fallos de inconsistencia, etc.
A pesar de todos estos problemas, React Native es una buena elección ya que tiene un potente equipo de desarrollo detrás: un equipo dentro de Facebook. Ello aporta una garantía soporte y desarrollo a largo plazo. Además, cada mes se realizan revisiones de React Native corrigiendo errores o aportando nuevas funcionalidades y mejoras.

Framework 7

Framework 7 no es uno de los más conocidos, pero tiene la ventaja de que es completamente independiente y por lo tanto no tiene dependencias externas en frameworks como Angular o React. En su apartado de diseño se asemeja a Ionic, aportando un diseño ajustado a los estándares de diseño de Android e iOS dependiendo de la plataforma en la que se ejecute.
Este framework tiene una curva de aprendizaje más baja que React Native e Ionic gracias a que se pueden realizar aplicaciones híbridas utilizando simplemente HTML5, CSS3 y JavaScript. No obstante Framework 7 permite su desarrollo también con Vue.JS o React si nos interesa. Para la emulación y ejecución requiere la combinación con Cordova o PhoneGap.

NativeScript

NativeScript permite el desarrollo de aplicaciones nativas mediante JavaScript y TypeScript. También permite el desarrollo mediante el Framework Angular, y en su última versión se ha incorporado también la posibilidad de desarrollar mediante el Framework Vue.js. NativeScript genera aplicaciones verdaderamente nativas, utilizando las mismas APIS que tendrías disponibles desde Android Studio (entorno de desarrollo nativo para Android) y XCode (IDE de Apple para desarrollo nativo en iOS). Incluso permite el acceso a bibliotecas nativas de terceros, aportando así mayores capacidades respecto al rendimiento y capacidades de las aplicaciones. Su mayor inconveniente es que el desarrollo de las interfaces de usuario es más complejo (es XML, no HTML), así como las abstracciones necesarias para acceder al código nativo de manera independiente del sistema. Con NativeScript no necesitarás a PhoneGap/Apache Cordova.

Conclusión

La principal ventaja que aportan las aplicaciones híbridas es que permiten, con un mismo framework, crear una aplicación para las distintas plataformas móviles. Esto permite desarrollar un mismo código para ambas plataformas, cosa que en proyectos nativos no es posible debido a que cada plataforma tiene que ser desarrollada en su propio lenguaje y con sus propias herramientas. Por lo tanto los proyectos híbridos suponen costes menores y menor tiempo.
En realidad cualquiera de los mencionados es una buena elección. Sin embargo, aunque se domine HTML/CSS/JavaScript y algún framework Front-End, mi consejo sería que tuvieses también algunos conocimientos sobre cómo trabajan las aplicaciones nativas y sus lenguajes, ya que te vendrán bien a la hora de compilar las aplicaciones, realizar ciertas tareas como configurar el controlador de versiones o la información requerida por las plataformas de publicación (Play Store, App Store), realizar integraciones con servicios de terceros o hardware, o efectuar modificaciones más avanzadas.
Actualmente uno de los frameworks que se están abriendo mucho hueco es Vue.js, ya que facilita mucho el trabajo y dispone de una curva de aprendizaje baja si se conoce bien JavaScript y jQuery. Por lo tanto, si tengo que elegir, personalmente me decantaría por una tecnología de las anterioremente citadas que permita desarrollar con Vue.js, es decir: Ionic o Framework 7.
Read More

Fundamentos de SQL: Cómo realizar consultas simples con SELECT

Fundamentos de SQL: Cómo realizar consultas simples con SELECT
SQL-Lenguaje
En un post anterior de esta serie (que es el germen de este curso de SQL) veíamos qué es el lenguaje SQL y sus diferentes subconjuntos de instrucciones. Aprendimos también los fundamentos de diseño de una base de datos relacional. Hoy vamos a aprender los fundamentos de consultas simples de datos con SELECT.

Operaciones básicas de manipulación de datos en SQL

Como hemos visto, las instrucciones DML (Data Manipulation Language – Lenguaje de Manipulación de Datos) trabajan sobre los datos almacenados en nuestro SGBD, permitiendo consultarlos o modificarlos.
En general a las operaciones básicas de manipulación de datos que podemos realizar con SQL se les denomina operaciones CRUD (de Create, Read, Update and Delete, o sea, Crear, Leer, Actualizar y Borrar, sería CLAB en español, pero no se usa). Lo verás utilizado de esta manera en muchos sitios, así que apréndete ese acrónimo.
Hay cuatro instrucciones para realizar estas tareas:
  • INSERT: Inserta filas en una tabla. Se corresponde con la “C” de CRUD.
  • SELECT: muestra información sobre los datos almacenados en la base de datos. Dicha información puede pertenecer a una o varias tablas. Es la “R”.
  • UPDATE: Actualiza información de una tabla. Es, obviamente, la “U”.
  • DELETE: Borra filas de una tabla. Se corresponde con la “D”.

Consulta de datos

Ahora nos vamos a centrar en la “R” de CRUD, es decir, en cómo recuperar la información que nos interesa de dentro de una base de datos, usando para ello el lenguaje de consulta o SQL.  Ya nos preocuparemos luego de cómo llegamos a introducir los datos primeramente.
Para realizar consultas sobre las tablas de las bases de datos disponemos de la instrucción SELECT. Con ella podemos consultar una o varias tablas. Es sin duda el comando más versátil del lenguaje SQL.
Existen muchas cláusulas asociadas a la sentencia SELECT (GROUP BY, ORDER, HAVING, UNION). También es una de las instrucciones en la que con más frecuencia los motores de bases de datos incorporan cláusulas adicionales al estándar, que es el que veremos aquí.
Vamos a empezar viendo las consultas simples, basadas en una sola tabla. Veremos cómo obtener filas y columnas de una tabla en el orden en que nos haga falta.
El resultado de una consulta SELECT nos devuelve una tabla lógica. Es decir, los resultados son una relación de datos, que tiene filas/registros, con una serie de campos/columnas. Igual que cualquier tabla de la base de datos. Sin embargo esta tabla está en memoria mientras la utilicemos, y luego se descarta. Cada vez que ejecutamos la consulta se vuelve a calcular el resultado.
La sintaxis básica de una consulta SELECT es la siguiente (los valores opcionales van entre corchetes):
SELECT [ ALL / DISTINC ] [ * ] / [ListaColumnas_Expresiones] AS [Expresion]
FROM Nombre_Tabla_Vista 
WHERE Condiciones
ORDER BY ListaColumnas [ ASC / DESC ]
A continuación analizaremos cada una de las partes de la consulta para entenderla mejor.

SELECT

Permite seleccionar las columnas que se van a mostrar y en el orden en que lo van a hacer. Simplemente es la instrucción que la base de datos interpreta como que vamos a solicitar información.

ALL / DISTINCT

ALL es el valor predeterminado, especifica que el conjunto de resultados puede incluir filas duplicadas. Por regla general nunca se utiliza.
DISTINCT especifica que el conjunto de resultados sólo puede incluir filas únicas. Es decir, si al realizar una consulta hay registros exactamente iguales que aparecen más de una vez, éstos se eliminan. Muy útil en muchas ocasiones.

Nombres de campos

Se debe especificar una lista de nombres de campos de la tabla que nos interesan y que por tanto queremos devolver. Normalmente habrá más de uno, en cuyo caso separamos cada nombre de los demás mediante comas.
Se puede anteponer el nombre de la tabla al nombre de las columnas, utilizando el formato Tabla.Columna. Además de nombres de columnas, en esta lista se pueden poner constantes, expresiones aritméticas, y funciones, para obtener campos calculados de manera dinámica.
Si queremos que nos devuelva todos los campos de la tabla utilizamos el comodín “*” (asterisco).
Los nombres indicados deben coincidir exactamente con los nombre de los campos de la tabla, pero si queremos que en nuestra tabla lógica de resultados tengan un nombre diferente podemos utilizar:

AS

Permite renombrar columnas si lo utilizamos en la cláusula SELECT, o renombrar tablas si lo utilizamos en la cláusula FROM. Es opcional. Con ello podremos crear diversos alias de columnas y tablas. Enseguida veremos un ejemplo.

FROM

Esta cláusula permite indicar las tablas o vistas de las cuales vamos a obtener la información. De momento veremos ejemplos para obtener información de una sola tabla.
Como se ha indicado anteriormente, también se pueden renombrar las tablas usando la instrucción “AS”.

WHERE

Especifica la condición de filtro de las filas devueltas. Se utiliza cuando no se desea que se devuelvan todas las filas de una tabla, sino sólo las que cumplen ciertas condiciones. Lo habitual es utilizar esta cláusula en la mayoría de las consultas.

Condiciones

Son expresiones lógicas a comprobar para la condición de filtro, que tras su resolución devuelven para cada fila TRUE o FALSE, en función de que se cumplan o no. Se puede utilizar cualquier expresión lógica y en ella utilizar diversos operadores como:
  • > (Mayor)
  • >= (Mayor o igual)
  • < (Menor)
  • <= (Menor o igual)
  • = (Igual)
  • <> o != (Distinto)
  • IS [NOT] NULL (para comprobar si el valor de una columna es o no es nula, es decir, si contiene o no contiene algún valor)
Se dice que una columna de una fila es NULL si está completamente vacía. Hay que tener en cuenta que si se ha introducido cualquier dato, incluso en un campo alfanumérico si se introduce una cadena en blanco o un cero en un campo numérico, deja de ser NULL.
  • LIKE: para la comparación de un modelo. Para ello utiliza los caracteres comodín especiales: “%” y “_”. Con el primero indicamos que en su lugar puede ir cualquier cadena de caracteres, y con el segundo que puede ir cualquier carácter individual (un solo carácter). Con la combinación de estos caracteres podremos obtener múltiples patrones de búsqueda. Por ejemplo:
    • El nombre empieza por A: Nombre LIKE ‘A%’
    • El nombre acaba por A: Nombre LIKE ‘%A’
    • El nombre contiene la letra A: Nombre LIKE ‘%A%’
    • El nombre empieza por A y después contiene un solo carácter cualquiera: Nombre LIKE ‘A_’
    • El nombre empieza una A, después cualquier carácter, luego una E y al final cualquier cadena de caracteres: Nombre LIKE ‘A_E%’
  • BETWEEN: para un intervalo de valores. Por ejemplo:
    • Clientes entre el 30 y el 100: CodCliente BETWEEN 30 AND 100
    • Clientes nacidos entre 1970 y 1979: FechaNac BETWEEN ‘19700101’ AND ‘19791231’
  • IN( ): para especificar una relación de valores concretos. Por ejemplo: Ventas de los Clientes 10, 15, 30 y 75: CodCliente IN(10, 15, 30, 75)
Por supuesto es posible combinar varias condiciones simples de los operadores anteriores utilizando los operadores lógicos ORAND y NOT, así como el uso de paréntesis para controlar la prioridad de los operadores (como en matemáticas). Por ejemplo:  … (Cliente = 100 AND Provincia = 30) OR Ventas > 1000 … que sería para los clientes de las provincias 100 y 30 o cualquier cliente cuyas ventas superen 1000.

ORDER BY

Define el orden de las filas del conjunto de resultados. Se especifica el campo o campos (separados por comas) por los cuales queremos ordenar los resultados.

ASC / DESC

ASC es el valor predeterminado, especifica que la columna indicad en la cláusula ORDER BY se ordenará de forma ascendente, o sea, de menor a mayor. Si por el contrario se especifica DESC se ordenará de forma descendente (de mayor a menor).
Por ejemplo, para ordenar los resultados de forma ascendente por ciudad, y los que sean de la misma ciudad de forma descendente por nombre, utilizaríamos esta cláusula de ordenación:
… ORDER BY Ciudad, Nombre DESC …
Como a la columna Ciudad no le hemos puesto ASC o DESC se usará para la misma el valor predeterminado (que es ASC)
OJO: Aunque al principio si aún no se está habituado, pueda dar la impresión de que se ordena por ambas columnas en orden descendente. Si es eso lo que queremos deberemos escribir … ORDER BY Ciudad DESC, Nombre DESC …

Algunos ejemplos

Para terminar este repaso a las consultas simples  practicarlas un poco, veamos algunos ejemplos con la base de datos Northwind en SQL Server:
- Mostrar todos los datos de los Clientes de nuestra empresa:
SELECT * FROM Customers
- Mostrar apellido, ciudad y región (LastName, city, region) de los empleados de USA (nótese el uso de AS para darle el nombre en español a los campos devueltos):
SELECT E.LastName AS Apellido, City AS Ciudad, Region
FROM Employees AS E
WHERE Country = ‘USA’
- Mostrar los clientes que no sabemos a qué región pertenecen (o sea, que no tienen asociada ninguna región) :
SELECT * FROM Customers WHERE Region IS NULL
- Mostrar las distintas regiones de las que tenemos algún cliente, accediendo sólo a la tabla de clientes:
SELECT DISTINCT Region FROM Customers WHERE Region IS NOT NULL
- Mostrar los clientes que pertenecen a las regiones CA, MT o WA, ordenados por región ascendentemente y por nombre descendentemente.
CODE SELECT * FROM Customers WHERE Region IN(‘CA’, ‘MT’, ‘WA’)
ORDER BY Region, CompanyName DESC
- Mostrar los clientes cuyo nombre empieza por la letra “W”:
SELECT * FROM Customers WHERE CompanyName LIKE ‘W%’
- Mostrar los empleados cuyo código está entre el 2 y el 9:
SELECT * FROM Employees WHERE EmployeeID BETWEEN 2 AND 9
- Mostrar los clientes cuya dirección contenga “ki”:
SELECT * FROM Customers WHERE Address LIKE ‘%ki%’
- Mostrar las Ventas del producto 65 con cantidades entre 5 y 10, o que no tengan descuento:
SELECT * FROM [Order Details] WHERE (ProductID = 65 AND Quantity BETWEEN 5 AND 10) OR Discount = 0
Nota: En SQL Server, para utilizar nombres de objetos con caracteres especiales se deben poner entre corchetes. Por ejemplo en la consulta anterior [Order Details] se escribe entre corchetes porque lleva un espacio en blanco en su nombre. En otros SGBDR se utilizan comillas dobles (Oracle, por ejemplo: “Order Details”) y en otros se usan comillas simples (por ejemplo en MySQL).

Resumen

Con esto hemos visto los fundamentos de las consultas de lectura de datos con SQL. En un posterior artículo vamos a complicar la cosa un poco y añadiremos sub-consultas y algunas instrucciones más complejas, como agrupaciones de datos y funciones de agregación.
Read More

Download Crystal Reports For Visual Studio 2015 & 2017

Download Crystal Reports For Visual Studio 2015 & 2017

The Crystal Reports for Visual Studio is now known as Crystal Reports Developer Edition for Visual Studio. It is also known as CR for VS (CrforVs). Crystal Reports currently supports Visual Studio 2017, Visual Studio 2015, Visual Studio 2013, Visual Studio 2012, Visual Studio 2010. Prior to Visual Studio 2010, the Crystal Reports were Installed along with Visual Studio.

Starting from Visual Studio 2010, the Crystal Reports are no longer installed with Visual Studio. Crystal Reports for Visual Studio must be downloaded and installed separately from the SAP Crystal Reports website. The Sap Crystal Reports is free to use and download.

Crystal Reports For Visual Studio

To Create and develop Dot Net application with crystal reports, you need to install Crystal Reports Developer Edition for Visual Studio. To distribute the application to the client or as a web server, you need to install the Crystal Reports runtime.

Crystal Reports Developer Edition for Visual Studio Download

Crystal Reports For Visual Studio can be downloaded from the following link
CRYSTAL REPORTS
VERSION
SUPPORTED 
IDE
DEVELOPER 
EDITION 
DOWNLOAD
RUNTIME
DOWNLOAD
Service Pack 25Visual Studio 2019, 2017,2015,2013,2012,2010SP 2532 Bit
64 Bit
Service Pack 24Visual Studio 2017,
2015,2013,2012,2010
SP 2432 Bit
64 Bit
Service Pack 23Visual Studio 2017,
2015,2013,2012,2010
SP 2332 Bit
64 Bit
Service Pack 22Visual Studio 2017,
2015,2013,2012,2010
SP 2232 Bit
64 Bit
Service Pack 21

**Contains Breaking Changes
Visual Studio 2017,
2015,2013,2012,2010
SP 2132 Bit
64 Bit
Service Pack 20Visual Studio 2015,
2013,2012,2010
SP 2032 Bit

64 Bit
Service Pack 19Visual Studio 2015,
2013,2012,2010
SP 1932 Bit
64 Bit
Service Pack 18Visual Studio 2015,
2013,2012,2010
SP 1832 Bit
64 Bit
Service Pack 17Visual Studio 2015,
2013,2012,2010
SP 1732 Bit
64 Bit
Service Pack 16Visual Studio 2015,
2013,2012,2010
SP 1632 Bit
64 Bit
Service Pack 15Visual Studio 2013
2013,2012,2010
SP 1532 Bit
64 Bit

Installation Notes

Crystal Reports for Visual Studio 2017

Crystal Reports Crystal Reports For Visual Studio 2017 is released by SAP on 01.09.2017.  The Service Pack Version that supports Visual Studio 2017 is 21. The Crystal Reports supports all editions of Visual Studio including the Visual Studio Community Edition.
  1. Install Windows Update KB2999226 before proceeding with the install
  2. Use “Run as Administrator” to install the setup
  3. CR has changed the Version No of Assemblies. The Old Version is 13.0.2000.0. The New Version is 13.0.3500.0. You need to open all your projects, Remove the old reference and add the new references. Then build the application
  4. If you do not want to remove the reference, then you need to add the following to app.config/web.config.
  5. Crystal Reports now uses the Net Framework 4.0.  The old versions used Net Framework 2.0/3.5.  Now you can get rid of <startup useLegacyV2RuntimeActivationPolicy=”true”> from the app.config
  6. Disclaimer: I have not tested any of the above points. If you have any issues, feel free to comment below.
<?xml version="1.0" encoding="utf-8"?><configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.CrystalReports.Engine" publicKeyToken="692fbea5521e1304" culture="neutral"/>
<bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
</dependentAssembly> 

<dependentAssembly> <assemblyIdentity name="CrystalDecisions.ReportSource" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.Shared" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> 
assemblyIdentity name="CrystalDecisions.Web" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> <assemblyIdentity name="CrystalDecisions.Windows.Forms" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> <assemblyIdentity name="CrystalDecisions.ReportAppServer.ClientDoc" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.CommonControls" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.CommonObjectModel" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly>
 
<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.Controllers" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.CubeDefModel" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.DataDefModel" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/>
 </dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.DataSetConversion" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/> 
</dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.ObjectFactory" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/> </dependentAssembly>
 
<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.Prompting" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/> </dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.ReportDefModel" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/> </dependentAssembly> 

<dependentAssembly> 
<assemblyIdentity name="CrystalDecisions.ReportAppServer.XmlSerialize" publicKeyToken="692fbea5521e1304" culture="neutral"/> <bindingRedirect oldVersion="13.0.2000.0" newVersion="13.0.3500.0"/> </dependentAssembly> 

</assemblyBinding> 
</runtime>
/configuration>

Crystal Reports for Visual Studio 2015

SAP Crystal Reports supports Visual Studio 2015 since the version developer version for Microsoft Visual Studio – Service Pack 16.  Service Pack 16 was released on 1st February 2016.  It Contains several bug fixes and enhancements.
  1. You need to install Framework 3.5. The Windows 10 OS does not install the 3.5 frameworks. You can do it by selecting  “Turn Windows feature on or off” and choose both options
  2. Add <startup useLegacyV2RuntimeActivationPolicy=”true”> in app.config/web.config file

Crystal Reports for Visual Studio 2013

Support for Visual Studio 2013 was added in the Service Pack 9
  1. You need to install Framework 3.5. The Windows 10 OS does not install the 3.5 frameworks. You can do it by selecting  “Turn Windows feature on or off” and choose both options
  2. Add <startup useLegacyV2RuntimeActivationPolicy=”true”> in app.config/web.config file

Crystal Report Official Download page

The SAP Crystal Reports keep changing their download page. Now it is available at. Only the latest version is available here.

How to Install Crystal Reports for Visual Studio

Installing is a very simple process. Download the installer and execute it. You will are taken through the step by step process. You can also refer to the Tutorial below if you find any issues while installing it.
  1. Click on How to install Crystal Reports for Visual Studio
  2. Click on How to install Crystal Reports runtime for Visual Studio

List of Changes Crystal Reports For Visual Studio

List of Changes in Service Pack 21

  1. This update requires Microsoft Windows Update KB2999226 is a prerequisite.
  2. For VS2017 integration, the user needs to “run as Administrator” by right-clicking setup.exe, even if you are already logged on by using the Administrator account
  3. CR Assemblies are re-versioned from 13.0.2000.0 to 13.0.3500.0.  The user MUST remove all old CR assemblies from the Reference list and add the new version of CR assemblies, then rebuild the application.
  4. If you do not want to rebuild the application, then there’s a workaround to use <dependentAssembly> in app.config/web.config
  5. Crystal Reports now uses the Net Framework 4.0.  The old versions used Net Framework 2.0/3.5.  Now you can get rid of <startup useLegacyV2RuntimeActivationPolicy=”true”> in app.config is required

List of Changes in Service Pack 20

  1. HANA 2.0 SPS01
  2. Crystal for visual studio web preview no prompt text
  3. Textfield Formatting problem
  4. PDF output format differs between Crystal designer and Crystal runtime
  5. Crystal for visual studio web preview missing box object
  6. Wrong Top Margin * vertical and horizontal lines are not at the same position

List of Changes in Service Pack 19

  1. Windows Server 2016
  2. IIS 10 on Windows Server 2016
  3. Error when canceling a print job using PrintOutputController() to the local file system: Unable to start the print job.
  4. Charts now have pixilated edges when using CR for VS Windows form viewer SP 18
  5. Enhancement Request: PrintOutputController does not allow Current Page in Winform Viewer
  6. Inline RAS printing does not respect Suppress Printing If No Records option selected
  7. Set Location to a secure MDB up one folder fails using ..\Access.mdb fails for subreports
  8. Crosstab report with rotated text does not show values
  9. Error Printing barcodes from WPF-Viewer
  10. Add the Xbase native DB driver back into distribution packages ( 32 bit only )
  11. Print from WPF viewer will not print landscape on Windows 2012 R2
  12. Linking Dataset Tables together does not work based on date/time fields
  13. The character in RTF string overlaps with the punctuation mark.
  14. Enhancement Request – Getting field values for each section
  15. CHM search with 3 5 framework hangs in search on the second attempt

List of Change in Service Pack 18

  1. Support for Visual Studio 2015 Update3
  2. Support for SQL Server 2014
  3. Support for SAP Sybase SQL Anywhere 17
  4. Addressed several customer Incidents.

List of Changes in Service Pack 17

  1. Support for Firefox ESR 45.
  2. Support for Office 2016.
  3. Addressed 10 customer Incidents.
  4. SAP HANA SP12.
  5. ER – Add a property in Windows.Forms.CrystalReportViewer to control the display quality of OLE object images
  6. Paging through the report with linked OLE is missing images
  7. Reporting off of Outlook/Exchange error – Fixed in CR Designer, no fix required for CR for VS
  8.  Print from WPF viewer will not print landscape
  9. DateTime field is rounding up now in CR.NET
  10. ‘DefaultAnimation.gif’ cannot be found exception will be thrown when instantiating instance inherits from CrystalDecisions.Windows.Forms.CrystalReportViewer
  11. Formula text is too long, which will lead the stack overflow when CR Designer attempts to compile the formula
  12. Exporting to CSV in .NET app wrong, different than CR Designer
  13. ER – OpenReportByDefault should use the “Same as Report” database option for PC data sources
  14. After upgrading to Cortez SP 16 from SP 15 Object on top of the object next to it in a WEB app.
  15. Right justified text on the left side in WEB viewer – VS 2015
  16. A hyperlink does not show underline under the whole link – not an issue in CR for VS
  17. ER – Setting screen size higher than 1080 does not render the page centered when using Whole Page – Zoom Level 2 in .NET SDK

Changes in Service Pack 16

  1. Support for Edge browser on Win 10.
  2. Support for Safari 9 on Mac OS 10.11.
  3. Addressed several Incidents.
  4. Support for HANA SP11
  5. Error from crpe32.dll on ExportToDisk
  6. Framework 4.6 causes CR for VS to create a unique folder path to the Crystalreportsviewer13 folder in IIS and IISExpress
  7. Enhancement Request: Crystal viewers OLE Object Copy does not work – use CTRL-C to copy
  8. Missing CR Viewer button Icons in VS 2015 when editing a report within Visual Studio
  9. Enhancement Request – print and export viewer control tab
  10. “Visual Studio not installed” message when executing the CRVS setup.exe on a 32 (x86) bit Operating System
  11. Pervasive Database can use a 24-byte encryption key for the Btrieve driver – password value length has been extended and in Crystal Reports Designer
  12. NET Runtime DisplayString Expression Parsing error

Changes in the Service Pack 15

  1. Added support for Visual Studio 2015 RC.
  2. Added an easy way to use Print Output Control in WinForm Viewer.
  3. Addressed several Incidents.
  4. Support for FireFox ESR 38.

Crystal Report How-to Guides

  1. How to Create Crystal Report using Visual Studio
    L
    earn how to create Crystal Reports using windows forms
  2. How to Create Crystal Reports in ASP.NET WebformsThis step by step tutorial takes you through the process of creating Crystal reports using ASP.NET Webforms
  3. How to Create Crystal Report using ASP.NET MVCThis Tutorial explains how to Create Crystal Reports Using ASP.NET MVC and ADO.NET Entity Model
  4. Crystal Reports Developer Guide & Tutorials
Read More