domingo, 29 de mayo de 2016
martes, 24 de mayo de 2016
Cómo utilizar el control Kendo UI NumericTextBox
El control Kendo UI NumericTextBox está diseñado para dar formato numérico y limitar los datos de entrada de los controles INPUT únicamente a los rangos que se especifiquen según sea especificado en la configuración del control.
Entre los formatos que este control puede manejar se encuentran las siguientes:
- Monedas
- Porcentaje
- Números enteros
- Números con precisión
Además si se utiliza el control con la sentencia kendo.culture este control puede dar formato de acuerdo al lenguaje y a las propiedades especificas de cada región o cultura.
Bien ahora mostraré un código en donde se verán todas las propiedades de este control, en este ejemplo se muestran 6 controles Kendo NumericTextBox, 4 de ellos configurado para mostrar cantidades monetarias, 1 de ellos configurado para mostrar cantidades enteras y el último para mostrar una cantidad porcentual.
Introduciendo los valores, observamos como los controles le dan formato numérico a las entradas de datos.
Como primer paso hago la iniciación de los controles, con la sintaxis:
Aquí algunas de las propiedades que utilizo en los controles de este ejemplo:
- format: Especifica el tipo de formato que se usará en la cantidad numérica. Su valor predeterminado es numérico “n”.
- spinners: Con esta propiedad se muestran las flechas de incremento/decremento del control.
Algunos de los eventos que utilizo:
- change: Este evento se ejecuta cuando el valor del control se cambia.
martes, 10 de mayo de 2016
Utilizando el bloque try/catch en SQL Server para manejar errores
Desde la versión 2005 de Sql Server se incorpora el bloque try/catch para el manejo de errores en el código T-SQL, esta característica similar a la que tienen los lenguajes .NET consiste de dos partes:
BEGIN TRY --Sentencias T-SQL de funcionalidad END TRY y el bloque CATCH BEGIN CATCH --Sentencias T-SQL para el manejo de error END CATCH
Cuando se genera un error dentro del bloque TRY, inmediatamente el flujo del programa continua en el bloque CATCH donde el error se procesa de diferentes maneras, sino se genera un error el flujo se salta el bloque CATCH y continua hasta terminar el programa.
Dentro del bloque CATCH puedes utilizar las siguientes funciones del sistema para obtener información del error.
- ERROR_LINE() - El número de línea que causo el error o donde se ejecutó la orden RAISERROR.
- ERROR_MESSAGE() - Un texto resumen que indica la naturaleza de error.
- ERROR_SEVERITY() - Regresa la severidad del error.
- ERROR_STATE() - Regresa un valor entero que regresa NULL si se ejecutó afuera de un bloque CATCH.
- ERROR_NUMBER() - Regresa el número de error que causo el error. Esta función regresa el número de error cuando se ejecuta adentro de un bloque CATCH, sino se ejecuta dentro un bloque CATCH regresa NULL.
- ERROR_PROCEDURE() - regresa el nombre del store procedure o trigger donde ocurrió el error.
- ERROR_PROCEDURE() - Regresa NULL si el error no ocurre dentro de un STORE PROCEDURE, si se ejecuta dentro de un STORE PROCEDURE o TRIGGER regresa entonces el nombre del STORE PROCEDURE o TRIGGER.
Una de las recomendaciones para la utilización del bloque TRY/CATCH es poner una sentencia ROLLBACK TRANSACTION en el bloque CATCH para que en caso de transacciones parciales se conserve la integridad de la información.
Bien a continuación un ejemplo de como programar un bloque TRY/CATCH en T-SQL:
Cuando se ejecuta este código con el número 25 positivo el programa se ejecuta correctamente y no generará una excepción :
En cambio si se ejecuta con un entero negativo se lanzará una excepción que el bloque CATCH procesará correctamente.
Consultando el catalogo sys.messages
Se puede consultar el catalogo sys.messages para ver la lista completa de números de error y sus correspondientes mensajes con la siguiente sentencia:
SELECT *FROM sys.messages ORDER BY message_id
miércoles, 4 de mayo de 2016
Entendiendo los arreglos en C#
Una de las estructuras de datos básicas en C# son los arreglos, los arreglos son estructuras que contienen elementos del mismo tipo relacionados y de longitud fija. Estas estructuras conservan la misma longitud una vez que se crean; pero esto puede cambiar si a la variable asignada se le asigna un nuevo arreglo con una longitud diferente, a continuación muestro unos ejemplos de como declarar un arreglo:
int[] array= new int[6]; int[] array2= {0,1,2,3,4,5}; var array3 = new int[6]{0,1,2,3,4,5};
Los elementos de un arreglo pueden ser primitivos, objetos u otros arreglos. Aqui algunos ejemplos: un arreglo con primitivos, objetos y arreglos.
string[] array4 = new string[6]; Point[] array5 = new Point[6]; int[][] jaggedArray = { new int[] {0,1}, new int[] {2,3,4}, new int[] {5,6} };
Para identificar a un elemento dentro de un arreglo se utiliza la posición del elemento dentro del arreglo, a esta posición se le conoce como el índice del elemento. Es importante recordar que para el primer elemento de cualquier arreglo su índice es zero y que el índice siempre es un entero no negativo.
Cuando se crea un arreglo y a sus elementos no se les proporciona un valor predeterminado entonces cada elemento se crea con su valor predeterminado: 0 para los elementos numéricos, false para los boolean y null para las referencias. La longitud de un arreglo se obtiene con la propiedad Length. Los elementos de un arreglo pueden recorrerse utilizando una iteración for utilizando un indice o bien con una instrucción foreach, la instrucción foreach itera entre los elementos desde el índice 0 hasta el final del arreglo. La instrucción foreach se recomienda para el recorrido de arreglos de solo lectura sin alteración del valor de los elementos, en operaciones donde no se requiere utilizar el indice o bien para los arreglos de tipo objetos.
El siguiente programa con el algoritmo Bubblesort muestra con más claridad las propiedades de los arreglos:
Al ejecutar este programa se mostrará el siguiente resultado: