Un generador de imagenes de Carga?? Si, Ajax Load es un generador de imágenes animadas de carga que dan la impresión de movimiento, mientras que se está cargando algún contenido o se está realizando una acción. Simplemente seleccionas los colores, el tipo de imágen que quieres utilizar y listo.
Bienvenido, en el presente blog encontraras diversos articulos, manuales y direcciones de apoyo para los siguientes lenguajes: XML, Java, .NET (C# y aspx), JavaScript, SQL y C++
viernes, 20 de abril de 2007
AJAX Load
jueves, 22 de febrero de 2007
SQL - Obtener registros que se encuentren en un rango de fechas (Fecha inicial y Fecha Final)
Si las fechas que deseamos comparar son de tipo DateTime debemos tener en cuenta que las fechas incluyen Dia, Mes, Anyo, Minutos, Segundos y Milisegundos. De esa forma, una fecha '15-02-2007 59:59.998' es valida para nuestra consulta.
-- Declaramos las fechas inicial y final respectivamente
DECLARE @FechaInicial AS DATETIME
DECLARE @FechaFinal AS DATETIME
-- Asignamos las fechas (Pueden ser recibidas en un
--stored procedure)
SET @FechaInicial = '16-01-2007 00:00'
SET @FechaFinal = '15-02-2007 00:00'
--========================================================
-- Si los valores son recibido en un Stored, es necesario
-- verificar que realmente queden en el formato anterior.
SET @FechaInicial = CONVERT(VARCHAR,@FechaInicial, 105) + ' 00:00'
SET @FechaFinal = CONVERT(VARCHAR, @FechaFinal, 105) + ' 00:00'
--========================================================
-- A la fecha final le sumamos un 1 dia, y obtenemos todas
-- las fechas que sean igual o mayor a '16-01-2007 00:00'
-- y sean menores a '16-02-2007 00:00'.
-- Mucho cuidado, ya que si la @FechaFinal tiene siquiera
-- milisegundos, podemos llegar a obtener registros no deseados.
SELECT *
FROM TuTabla AS T
WHERE (T.Fecha >= @FechaInicial AND T.Fecha < DATEADD(DAY, 1, @FechaFinal))
martes, 16 de enero de 2007
SQL - Recomendaciones
- No hacer uso de sp_ al inicio de los procedimientos almacenados.
- Cuando realicemos consultas, hacer uso de WITH(NOLOCK) para no bloquear las tablas inecesariamente.
- Utilizar parámetros de entrada y de salida para procedimientos almacenados.
- Hacer uso de RETURN cuando vayamos a regresar un valor entero, en lugar de develver ese valor mediante un SELECT.
- Utilizar transacciones y controlar los errores en los procedimientos almanacenados.
- Emplear errores personalizados.
SQL - Eliminar multiples registros de una tabla.
- 1.- Crear nuestra consulta de los registros que deseamos eliminar. Aqui estamos no estamos considerando que otras tablas hagan referencia a los valores que deseamos eliminar. [Verificar que realmente sean los registros que deseamos eliminar]. Si la consulta es muy compleja o se desea hacer en secciones, puede hacerse uso de tablas temporales para almacenar por ejemplo, los Ids de los registros a eliminar, y posteriormente hacer uso de esa tabla temporal como parte de la restriccion para la eliminacion.d
- 2.-Creamos una transaccion.
- 3.- Procedemos a eliminar los registros.
- 4.- Verificamos que el total de lineas afectadas hayan coincidan con el total de registros obtenidos en la consulta del paso 1.
viernes, 10 de noviembre de 2006
SQL - Medir el tiempo de ejecución de sentencias sql
--Declaracion de la variable que nos permitira medir el tiempo DECLARE @TiempoInicial DATETIME SET @TiempoInicial = GETDATE() -- ------------------------------- SETENCIAS ------------------------------- SELECT * FROM Persona WHERE DATEDIFF(day, FechaRegistro, DATEADD(DAY,-15,GETDATE())) <= 0 -- ------------------------------- SETENCIAS ------------------------------- -- Realizar la diferencia entre el tiempo inicial y final de la ejecución de las sentencias PRINT 'Operacion completada en: ' + RTRIM(CAST(DATEDIFF(ms,@TiempoInicial, GETDATE()) AS VARCHAR(10))) + ' milisegundos'
martes, 7 de noviembre de 2006
SQL - Crear un procedimiento almacenado
- Procedimento sin parametros.
- Procedimiento con parámetros de entrada.
- Procedimiento con parámetros de entrada y de salida.
| Nota: Los procedimientos almacenados definidos por el usuario son creados en la base de datos actual. |
| Procedimiento sin parámetros. |
/* -------------------------------------------------------------------------------- Autor: Mario Alberto Sanchez Gamboa Fecha: Descripcion: Procedimiento que realiza la suma de dos numeros y regresa el resultado mediante el uso de la sentencia SELECT. **Emplea declaracion de variables. **Asigacion de valores a variables. **Uso de ISNULL.- Remplaza el nulo por el valor especificado. **Uso de CAST.- Convierte explicitamente una expresion de un tipo de dato a otro. **Concatenacion de cadenas. -------------------------------------------------------------------------------- */ CREATE PROCEDURE spSumaSinParametros AS --Declaracion de variables DECLARE @Numero1 FLOAT, @Numero2 FLOAT, @Resultado FLOAT, @Operacion NVARCHAR(25) --Asignacion de valores iniciales SET @Numero1 = 5.55 SET @Numero2 = 15 --Operacion. --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables. SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0) SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR) --Realizar un select con el resultado de la operacion. SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado AS Resultado, @Operacion AS Operacion GO
Para ejecutar el procedimiento almacenado empleamos la siguiente sentencia:
EXECUTE spSumaSinParametros Resultado: Numero1 Numero2 Resultado Operacion -------------------- ---------- --------------------- -------------------- 5.5499999999999998 15.0 20.550000000000001 5.55 + 15 = 20.55 (1 row(s) affected) |
| Procedimiento con parámetros de entrada. |
/* -------------------------------------------------------------------------------- Autor: Mario Alberto Sanchez Gamboa Fecha: Descripcion: Procedimiento que realiza la suma de dos numeros los cuales recibe mediante parametros de entrada y regresa el resultado mediante el uso de la sentencia SELECT. **Emplea declaracion de variables. **Asigacion de valores a variables. **Uso de ISNULL.- Remplaza el nulo por el valor especificado. **Uso de CAST.- Convierte explicitamente una expresion de un tipo de dato a otro. **Concatenacion de cadenas. -------------------------------------------------------------------------------- */ CREATE PROCEDURE spSumaConParametros @Numero1 FLOAT, @Numero2 FLOAT AS --Declaracion de variables DECLARE @Resultado FLOAT, @Operacion NVARCHAR(25) --Operacion. --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables. SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0) SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR) --Realizar un select con el resultado de la operacion. SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado AS Resultado, @Operacion AS Operacion GO
Para ejecutar el procedimiento almacenado empleamos la siguiente sentencia:
EXECUTE spSumaConParametros 5.55, 15 Resultado: Numero1 Numero2 Resultado Operacion -------------------- ---------- --------------------- -------------------- 5.5499999999999998 15.0 20.550000000000001 5.55 + 15 = 20.55 (1 row(s) affected) |
| Procedimiento con parámetros de entrada y salida. |
/* -------------------------------------------------------------------------------- Autor: Mario Alberto Sanchez Gamboa Fecha: Descripcion: Procedimiento que realiza la suma de dos numeros y regresa el resultado mediante el uso un parametro de salida y una sentencia SELECT. El valor son recibidos con parametros de entrada, y el resultado es regresado mediante un parametro de salida, asi como de una sentencia SELECT. **Emplea declaracion de variables. **Asigacion de valores a variables. **Uso de ISNULL.- Remplaza el nulo por el valor especificado. **Uso de CAST.- Convierte explicitamente una expresion de un tipo de dato a otro. **Concatenacion de cadenas. -------------------------------------------------------------------------------- */ CREATE PROCEDURE spSumaConParametroDeSalida @Numero1 FLOAT, @Numero2 FLOAT, @Resultado FLOAT OUTPUT AS --Declaracion de variables DECLARE @Operacion NVARCHAR(25) --Operacion. --Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables. SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0) SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR) --Realizar un select con el resultado de la operacion. SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Operacion AS Operacion GO
Para ejecutar el procedimiento almacenado empleamos la siguiente sentencia:
DECLARE @ParamResultado FLOAT DECLARE @EjecucionParametro INT EXECUTE @EjecucionParametro = spSumaConParametroDeSalida 5.55, 15, @ParamResultado OUTPUT SELECT @ParamResultado AS Resultado, @EjecucionParametro AS EjecucionParametro Resultado: Numero1 Numero2 Resultado Operacion -------------------- ---------- --------------------- -------------------- 5.5499999999999998 15.0 20.550000000000001 5.55 + 15 = 20.55 (1 row(s) affected) Resultado EjecucionParametro --------------------- -------------------- 20.550000000000001 0 (1 row(s) affected) |
| Si se desea comprobar la existencia de un procediento se puede hacer uso de las siguientes sentencias. |
--Verificamos si el procedimiento que vamos a crear existe en la base de datos, --en caso de que exista se procede a eliminar dicho procedimiento. IF EXISTS (SELECT name FROM sysobjects WHERE name = 'spSumaSinParametros' AND type = 'P') DROP PROCEDURE spSumaSinParametros GO |
| En este ejemplo verificamos si ya existe el procedimiento spSumaSinParametros, en caso de que exista se procede a eliminarlo. |
SQL - Conocer si un procedimiento, tabla, etc. existe en la base de datos
| A continuación se detalla el diseño de la tabla sysobjects. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ejemplo de uso: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
--Verificamos si el procedimiento que vamos a crear existe en la base de datos, |
SQL - Devolver errores y advertencias desde un procedimiento almacenado de SQL Server
En diversas situaciones requerimos poder regresar advertencias o errores personalizados desde un procedimiento almacenado, en el presente articulo veremos como lograrlo.
Si se genera un error en SQL donde su gravedad sea igual o menor a 10 solo se lanza una advertencia sin generar una excepción, sin embargo, si la gravedad fue igual o mayor a 11 es lanzada una excepción y es probable que el procedimiento almacenado sea anulado. Es importante contar también con un manejo de transacciones para que se ejecute o no completo nuestro stored.
/* --------------------------------------------------------------------------------
Autor: Mario Alberto Sanchez Gamboa
Fecha:
Descripcion: Procedimiento que lanza un error personalizado.
Actualizacion:
-------------------------------------------------------------------------------- */
ALTER PROCEDURE spTemporal
@param1 BIT
AS
BEGIN
IF @param1 = 1
BEGIN
RETURN 0
END
ELSE
BEGIN
RAISERROR ('Error personalizado al momento de ejecutar el procedimiento.', 11, 1)
RETURN -1
END
END
Si ejecutamos el stored anterior con un valor de diferente a 1 será lanzado el error personalizado.
EXEC spTemporal 0
Resultado:
Server: Msg 50000, Level 11, State 1, Procedure spTemporal, Line 18
Error personalizado al momento de ejecutar el procedimiento.
SQL - Generar números de filas haciendo uso de Tablas Temporales
IDENTITY Nos permite generar valores secuenciales, con base en los parámetros que se establezcan SELECT IDENTITY(TipoDato, ValorInicial, Incremento) AS ID_Num
Esta sentencia la podemos utilizar solo cuando SELECT contiene la clausula INTO. | ||||||||||||||||||||||||||||||||||||||||||||||||||
Tablas Temporales Para hacer uso de la clausula INTO creamos una tabla temporal de la siguiente forma: SELECT IDENTITY(INT, 1, 1) AS ID, CustomerID, CompanyName, ContactName, Country INTO #TMP_CUSTOMER FROM Customers ORDER BY Country SELECT * FROM #TMP_CUSTOMER DROP TABLE #TMP_CUSTOMER En este ejemplo obtenemos los clientes de la tabla Customers ordenados por su campo Country de la base de datos Northwind y parte del resultado obtenido es: | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
Ahora, si la tabla de la cual vamos a obtener la información contiene una columna IDENTITY, el motor encontrará que hay 2 columnas INDENTITY en la tabla a generar, produciendo un error. Para solucionar este problema es necesario convertir la columna IDENTITY de la tabla que causa el problema al mismo tipo de dato (lo que hacemos es quitarle el IDENTITY) Por ejemplo, la tabla Products de la base de datos Northwind tiene definida la propiedad IDENTITY en la columna ProductID. SELECT IDENTITY(INT, 1, 1) AS ID, CAST(ProductID AS INT) AS ProductID, ProductName INTO #TMP_PRODUCTS FROM Products SELECT * FROM #TMP_PRODUCTS DROP TABLE #TMP_PRODUCTS Parte del resultado de este ejemplo es el siguiente: | ||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||