Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problemas con procedimiento

Estas en el tema de Problemas con procedimiento en el foro de SQL Server en Foros del Web. Hola a todos! De antemano agardezco cualquier ayuda que me puedan brindar. Resulta que yo estoy realizando el siguiente procedimiento: Código: CREATE TABLE #Fechas (Fechas ...
  #1 (permalink)  
Antiguo 07/03/2008, 09:02
Avatar de kejos  
Fecha de Ingreso: septiembre-2005
Mensajes: 100
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta Problemas con procedimiento

Hola a todos!
De antemano agardezco cualquier ayuda que me puedan brindar.
Resulta que yo estoy realizando el siguiente procedimiento:
Código:
CREATE TABLE  #Fechas (Fechas VARCHAR(10) NOT NULL)
 DECLARE @i INT
 DECLARE @FechaIng VARCHAR(10)
 SET @i = "0"
 WHILE @i <= 30--se calculan hasta 30 días
 BEGIN
  SET @FechaIng = CONVERT(VARCHAR(10),DATEADD(DAY,@i,GETDATE()),103)
  INSERT INTO #Fechas (Fechas)
  SELECT @FechaIng
  SET @i = @i + 1
 END
 DECLARE Fecha_Cursor CURSOR FOR
 (SELECT CONVERT(VARCHAR(10), FechaPrestamoReserva,103) AS FechaPrestamoReserva, 
  CONVERT(VARCHAR(10),FechaEntrega,103) AS FechaEntrega --EJEMPLAR RESERVADO
 FROM    Servicios
 WHERE   CodigoAcceso = "0003032" AND FechaDevolucion IS NULL AND FechaCancelacion IS NULL AND 
  FechaPrestamoReserva IS NOT NULL)
UNION
 (SELECT CONVERT(VARCHAR(10), FechaPrestamo,103) , CONVERT(VARCHAR(10), FechaEntrega,103) --EJEMPLAR PRESTADO
 FROM    Servicios
 WHERE   CodigoAcceso = "0003032" AND FechaDevolucion IS NULL AND FechaCancelacion IS NULL AND FechaPrestamo IS 
  NOT NULL )
 DECLARE @FechaPrestamoR VARCHAR(10)
 DECLARE @FechaEntre VARCHAR(10)
 OPEN Fecha_Cursor
  FETCH NEXT FROM Fecha_Cursor INTO @FechaPrestamoR, @FechaEntre
  WHILE @@FETCH_STATUS = 0
  BEGIN--Elimina los rangos de días que esta o será prestado el ejemplar
   DELETE FROM #Fechas
   WHERE   CONVERT(DATETIME,#Fechas.Fechas,103) BETWEEN CONVERT(DATETIME,@FechaPrestamoR,103) 
     AND DATEADD(DAY,-1,CONVERT(DATETIME,@FechaEntre,103))
   FETCH NEXT FROM Fecha_Cursor INTO @FechaPrestamoR, @FechaEntre 
  END
 CLOSE Fecha_Cursor
 DEALLOCATE Fecha_Cursor
 DELETE FROM  #Fechas
 WHERE   datepart(dw, Fechas) = "7" --Elimina los domingo de la fechas disponibles
 DELETE FROM  #Fechas
 WHERE   datepart(dw, Fechas) = "6" --Elimina los sábados de la fechas disponibles
 DELETE FROM    #Fechas 
 WHERE   Fechas in (SELECT Festivo
      FROM  Festivos) --Elimina los dias festivos
 SELECT  Fechas --da como resultado las fechas disponibles d reserva
 FROM  #Fechas
GO
Este procedimiento me funciona correctamente en el servidor Web pero en mi equipo al realizar una migraciónde mi aplicación a 2005 resulta que no me funciona y me saca el siguiente error:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
The statement has been terminated.
en 3 líneas del procedimiento
Lo que es raro para mi es que anteriormente funcionaba pero ahora no quiere funcionar le cambie en los convert de 103 o 112 y el procedimiento funciona pero cuando voy a convertir los valores que me arroja a DateTime en la aplicación me dice que no reconoce el formato de fecha cómo valido.
Muchas gracias por toda la ayuda que me puedan brindar. Espero haber sido clara en la explicación de mi problema
__________________
Kelly Johana:si:
  #2 (permalink)  
Antiguo 07/03/2008, 10:29
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: Problemas con procedimiento

Debes revisar la configuracion regional del servidor, ya que seguramente esta distinta a la configuracion regional del servidor web, por eso es que en un lado si te funciona y en otra no.

tambien podrias forzar el formato de la fecha

set dateformat dmy
__________________
roy rojas
Programación en Español: DotNetcr.com
  #3 (permalink)  
Antiguo 07/03/2008, 11:06
Avatar de kejos  
Fecha de Ingreso: septiembre-2005
Mensajes: 100
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta Re: Problemas con procedimiento

Hola!!
Ahora mi problema es el siguiente, si al procedimiento le quito la parte:
Código:
/*DELETE FROM 	#Fechas
	WHERE 		datepart(dw, Fechas) = '7' --Elimina los domingo de la fechas disponibles
	DELETE FROM 	#Fechas
	WHERE 		datepart(dw, Fechas) = '6' --Elimina los sábados de la fechas disponibles
	DELETE FROM   	#Fechas	
	WHERE 		Fechas in	(SELECT	Festivo
		 			FROM 	Festivos)	--Elimina los dias festivos*/
Resulta que me muestra los datos pero igual necesito que de esos datos que me muestra yo pueda quitar los sabados y domingos.
Cómo puedo hacerlo ya que de la forma en que se muestra en el codigo me saca el error mostrado en el post anterior?

De antemano gracias por toda su ayuda y colaboración
__________________
Kelly Johana:si:
  #4 (permalink)  
Antiguo 07/03/2008, 11:18
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: Problemas con procedimiento

la funcion DatePart retorna
1 = Domingo
7 = Sabado

osea en el script que tienes ahi borras los viernes y sabados.

Por que no creas la tabla temporal el la columna Fecha en tipo datetime, asi no te darian problemas de diferencia de tipos de datos.
__________________
roy rojas
Programación en Español: DotNetcr.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:55.