Validar una fecha en formato mm/YYYY (mes/año) con JavaScript y Expresiones Regulares

4 11 2009

Para validar una fecha en formato mes/año o mm/YYYY usando JavaScript se puede hace uso de la siguiente funcion, que hace uso de una expresion regular, de hecho, las expresiones regulares abren un mundo de posibilidades.

function validateMMYYYY(cadena) {
	var reg = new RegExp("(((0[123456789]|10|11|12)/(([1][9][0-9][0-9])|([2][0-9][0-9][0-9]))))");

	if (reg.test(cadena))
		return true;
	else
		return false;
}

Recomiendo usar Expresso de www.ultrapico.com, para crear las expresiones regulares y probarlas. Una pagina para las expresiones regulares es precisamente http://regexlib.com





Calcular el primer dia y el ultimo de un mes dado, en SQL

4 11 2009

Para el acordeón, una forma de calcular el dia inicial y final de un mes, esto con el fin de determinar si un mes tiene 28, 30 o 31, es de la siguiente manera.

declare @mes varchar(2)
declare @fecha as varchar(8)
set @mes = '02'
set @fecha = '2009' + @mes + '01'
select @fecha AS FECHA_INICIAL,
	CAST (@fecha as smalldatetime) AS FECHA_INICIAL,
	dateadd(m,1, CAST (@fecha as smalldatetime)) AS FECHA_SIGUIENTE,
	dateadd(d,-1,dateadd(m,1, CAST (@fecha as smalldatetime))) AS FECHA_FINAL

Un escenario que me imagino para usarlo es en el que se requiere calcular o ejecutar un proceso en un mes en particular (fecha entre un rango inicial y final), sin embargo, esto es solo una curiosidad, porque tambien es posible hacer un calculo para un mes en particular poniendo en la condicion algo así como esto

SELECT * FROM TABLA WHERE MONTH(FECHA)=@MES

Sin embargo, creo que hacerlo de esta manera, de tener un índice la TABLA en cuestión no se usuaría en la consulta, no así si usaramos una condición de tipo between @FECHA_INICIAL AND @FECHA_FINAL. Que alguien me corriga, si tengo la idea errónea.





Error en el MS Project 2007 al visualizar el Diagrama de Gantt. Solucionado

17 03 2009

Me sucedió que me enviaron un archivo de MS Project hecho en la versión 2007 en español, tengo la versión en inglés. Al intentar abrirlo me marca el error:

The view or Report cannot be displayed because the table “Entrada” on which it is based has been deleted.

Este error lo muestra al abrirlo la primera vez. Sólo se puede visualizar el Tracking Gantt, pero no la vista Gantt Chart, que al querer seleccionarlo muestra información adicional.

Mensaje de Error al visualizar el diagrama de Gantt.

Mensaje de Error al visualizar el diagrama de Gantt.

Leer el resto de esta entrada »





Imprimir u Obtener la lista de subdirectorios y sus Archivos

11 12 2008

Si deseas imprimir o exportar a texto la estructura de un directorio, se puede hacer con el comando dir, ese comando de toda la vida. Desde el Explorador de Windows no es posible, al menos no lo localizé. Asi que lo haremos en Modo Bestia, desde línea de comandos.

Veamos el modo en que se puede realizar.

dir "C:\Temp" /B /S

El parámetro /B indica que no se muestren resúmenes ni encabezados

El parámetro /S indica se recorra todo el arbol de directorios.

Si quieren enviarlo a un archivo de Texto lo hariamos mediante el modificador de flujo >.Como sigue:

dir "C:\Temp" /B /S > "c:\dirout.txt"

Leer el resto de esta entrada »





Salida delimitada por comas en una consulta en lugar de un conjunto de filas

25 07 2008

Hay ocasiones en que se necesitamos obtener el resultado de una consulta como un conjunto de valores delimitados por comas en una sola fila, en lugar de un conjunto de filas, para este menester podemos obtenerlo de dos formas distintas.

1.- Mediante un cursor:

DECLARE cursorIDs CURSOR FOR
	SELECT CLAVE FROM PRODUCTOS
	ORDER BY CLAVE
DECLARE @CodigoIDs    VARCHAR(8000)
DECLARE @CodigoID     VARCHAR(10)

OPEN cursorIDs
FETCH NEXT FROM cursorIDs INTO @CodigoID
WHILE @@FETCH_STATUS = 0
BEGIN
	SET @CodigoIDs = ISNULL(@CodigoIDs + ',', '') + @CodigoID
	FETCH NEXT FROM cursorIDs INTO @CodigoID
END

CLOSE cursorIDs
DEALLOCATE cursorIDs

SELECT @CodigoIDs AS Codigos_Productos
GO

o bien,

Leer el resto de esta entrada »





Server Error in ‘/’ Application. Request timed out.

16 06 2008

Tratando de visualizar un reporte con el ReportViewer me marcaba este error, cabe mencionar, que la consulta se llevaba un buen de tiempo en ejecutarse, pero que aun así, no creia que eso provocara un timeout, bueno el error en cuestión era:

Server Error in ‘/’ Application.
——————————————————————————–

Request timed out.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: Request timed out.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:
[HttpException (0x80004005): Request timed out.]

Leer el resto de esta entrada »





LPAD en SQL Server, rellenando por la izquierda

3 06 2008

Me habia surgido la duda de como implementar la funcion LPAD de oracle, esa función que permite agregar caracteres comodines sobre un campo consultado.

Bueno lo que realmente hice no implica propiamente una implementación de esa función, sino mas bien como salir del paso y obtener el valor deseado. Tenía un campo númerico al que necesitaba devolverlo como una cadena de caracteres, el campo podia contener hasta dos dígitos, por tanto, si era de un solo digito anteponer el número 0, de tal modo que quede así:

01
02
03

09
10
11

99

Leer el resto de esta entrada »





Mostrar acentos en alert y confirm en javascript

30 05 2008

Navegando por la red, me encontré la página de Luis Ruiz en la que habla de como evitar los molestos caracteres que no se muestran cuando estos llevan acentos, tal y como se muestra en la siguiente figura:


Leer el resto de esta entrada »





Resetear un campo IDENTITY

28 05 2008

Veamos como resetear el contador de un campo autonúmerico / autoincremental ( campo IDENTITY) en una tabla de SQL Server.
Existen dos maneras de hacerlo, una es haciendo un truncate table, que lo que hace es borrar y volver a crear la tabla, y por ende se lleva entre las patas borra el valor numérico del campo(s) en cuestion (que no siempre es lo que queremos, porque perderemos todos los datos, jeje).

TRUNCATE TABLE Nombre_de_la_tabla

La otra forma es haciendo uso de la consola de comandos de la Base de Datos, DBCC, para ser mas claros, y consite en:

DBCC CHECKIDENT Nombre_de_la_tabla,RESEED,NuevoValor

Leer el resto de esta entrada »





Usando un índice de manera explícita en un select

28 05 2008

Si hemos creado un índice sobre alguna tabla y al momento de ejecutar alguna consulta notamos que en el plan de ejecución, no se hace uso de ese indice, podemos forzar la utilización de ese indice de la siguiente manera:

Ejemplo para forzar el uso de un Non Clustered Index:

SELECT * FROM authors WITH (INDEX(NOMBRE_DEL_INDICE))

Se debe tener cuidado del uso de este hint, hay ocasiones en que se degrada la optimización.