Principales respuestas
Como hacer que no se solapen las actividades si es que ya se tiene otra actividad en ese horario

Pregunta
-
Buenas tarde tengo el siguiente código:
IF @object_type = '33' AND @transaction_type IN ('A','U')
BEGIN
DECLARE @USUARIO AS NVARCHAR(100)
DECLARE @FECHAINICIO AS date
DECLARE @HORAINICIO AS Time
SET @FECHAINICIO =(SELECT Recontact FROM OCLG WHERE ClgCode = @list_of_cols_val_tab_del)
SET @USUARIO = (SELECT AttendUser FROM OCLG WHERE ClgCode = @list_of_cols_val_tab_del)
SET @HORAINICIO = (SELECT BeginTime FROM OCLG WHERE ClgCode =@list_of_cols_val_tab_del)
IF EXISTS (Select COUNT(AttendUser) FROM OCLG WHERE EndTime <= @HORAINICIO AND Recontact=@FECHAINICIO AND AttendUser=@USUARIO HAVING COUNT (AttendUser)>1)
BEGIN
SET @error= 1011
SET @error_message='EL USUARIO YA TIENE UNA ACTIVIDAD PROGRAMADA'
END
ENDLo que quiero hacer es que en el momento que el usuario quiera agregar una activad, valide que hora de inicio de la actividad no caiga dentro del periodo de otra actividad
De antemano muchas gracias
miércoles, 15 de noviembre de 2017 21:57
Respuestas
-
si nos pasas un par de insert en la tabla oclg con los datos que realmente tienes será un placer ayudarte.
Básicamente no necesitas tanto set como estas haciendo , esos sets impiden que te funcione bien porque si hay mas de un registro se quedan únicamente con uno (no con el primero, aleatoriamente con uno) así que el asunto hay que resolverlo en un query teniendo como parámetro @fecha, @horainicio de la nueva actividad .
Saludos
Comparte lo que sepas, aprende lo que no sepas (FGG)
portalSQL
El rincón del DBA- Propuesto como respuesta Pablo RubioModerator viernes, 17 de noviembre de 2017 16:21
- Marcado como respuesta Pablo RubioModerator martes, 21 de noviembre de 2017 15:32
jueves, 16 de noviembre de 2017 7:48Moderador
Todas las respuestas
-
si nos pasas un par de insert en la tabla oclg con los datos que realmente tienes será un placer ayudarte.
Básicamente no necesitas tanto set como estas haciendo , esos sets impiden que te funcione bien porque si hay mas de un registro se quedan únicamente con uno (no con el primero, aleatoriamente con uno) así que el asunto hay que resolverlo en un query teniendo como parámetro @fecha, @horainicio de la nueva actividad .
Saludos
Comparte lo que sepas, aprende lo que no sepas (FGG)
portalSQL
El rincón del DBA- Propuesto como respuesta Pablo RubioModerator viernes, 17 de noviembre de 2017 16:21
- Marcado como respuesta Pablo RubioModerator martes, 21 de noviembre de 2017 15:32
jueves, 16 de noviembre de 2017 7:48Moderador -
Lo que pasa es que ese es un candado para SAP BO que necesito hacer y no puedo acceder a los procedimientos almacenados donde se crean los insert, el set lo ocupo para que tome el valor que esta en la pantalla el momento que se va a crear, y para poder hacer la comparación entre lo que esta en la pantalla y lo que esta en la tabla OCLG, ya logre resolver parte de mi problema, mi código es el siguiente:
IF @object_type = '33' AND @transaction_type IN ('A','U')
BEGIN
DECLARE @USUARIO AS NVARCHAR(100)
DECLARE @FECHAINICIO AS date
DECLARE @HORAINICIO AS VARCHAR(8)
SET @FECHAINICIO =(SELECT Recontact FROM OCLG WHERE ClgCode = @list_of_cols_val_tab_del)
SET @USUARIO = (SELECT AttendUser FROM OCLG WHERE ClgCode = @list_of_cols_val_tab_del)
SET @HORAINICIO = (SELECT CONVERT(VARCHAR(8),(BeginTime)) FROM OCLG WHERE ClgCode = @list_of_cols_val_tab_del)
IF EXISTS (Select COUNT(AttendUser) FROM OCLG where CONVERT(VARCHAR(8),BeginTime)<@HORAINICIO AND Recontact=@FECHAINICIO AND AttendUser=@USUARIO HAVING COUNT (AttendUser)>1)
BEGIN
SET @error= 1011
SET @error_message='EL USUARIO YA TIENE UNA ACTIVIDAD PROGRAMADA'
END
END---------------------------------------------------------------------------------------------------------------
El problema ahora es que si manda el mensaje de error, siempre y cuando se haga la actividad a las mismas horas que fue creada la anterior, pero ahora si por ejemplo mi primera actividad de de 8 am a 5 pm y pongo la segunda actividad de 1 pm a 2 pm si me permite generar la actividad cuando no debe de permitirla hacer porque es ese lapso esta ocupada la persona haciendo la primera actividad
De antemano muchas gracias
jueves, 16 de noviembre de 2017 20:01