none
Problemas al agregar hr de salida de un registro RRS feed

  • Pregunta

  • Buen dia!!

    Estoy desarrollando un sistema de entradas y salidas de equipos por medio de tarjetas rfid. Este sistema genera registros al pasar por la lectora. El problema es cuando yo se cuento con mas de un registro de ese equipo, al momento de agregar la hr de salida de la misma tarjeta rfid, me modifica las salidas en todos los registros que corresponde ese id_rfid al parecer no estoy haciendo referencia al id del registro.

    Estas son las tablas que utilizo.

    El procedimiento almacenado  es el siguiente:

    ALTER PROCEDURE [dbo].[RegistrarEyS]
    
    @idC varchar(100),
    @pMessage	varchar(100) OUTPUT,
    @pMessage2	varchar(100) OUTPUT,
    @pMessage3	varchar(100) OUTPUT
    
    as
    ---se hace un insert a la tabla usuarios y se envian los parametros
    BEGIN
     SET NOCOUNT ON;
    Declare @vexistID int
    Declare @vexistFS int
    Declare @vexistMA int
    
    
    --------------------------------------------------------------------
    	SET @pMessage = ''
    	SET @pMessage2 = ''
    	SET @pMessage3 = ''
    	
    ---------------------------------------------------------------------
    
     Set @vexistMA = ( select COUNT(id_rfid) from Equipo 
                       where id_rfid = @idC)
    
    
    
    IF @vexistMA > 0
    BEGIN
    
      set @vexistID = (select COUNT(id_rfid) from Registro_EyS 
                     where id_rfid = @idC)
                     
                     
           IF @vexistID > 0                  
           BEGIN
            
                    set @vexistFS = (select COUNT(id_rfid) from Registro_EyS 
                     where id_rfid = @idC AND fechayHrE is not null AND fechayHrS is null)
                     IF @vexistFS > 0  
                       BEGIN
                       Set @pMessage2='Registro de SALIDA Exitoso'
                       UPDATE Registro_EyS 
                       set fechayHrS = GETDATE()
                       WHERE id_rfid =@idC
                       
                     END
                     ELSE
                       BEGIN
                       Set @pMessage3='Registro de ENTRADA Exitoso'
                       insert into Registro_EyS
                       ([fechayHrE],[fechayHrS],[id_rfid])
                       values(GETDATE(),null,@idC)
              
                      END  
                 
           END 
           ELSE
           BEGIN
           Set @pMessage3='Registro de ENTRADA Exitoso'
             insert into Registro_EyS
             ([fechayHrE],[fechayHrS],[id_rfid])
             values(GETDATE(),null,@idC)
              
           END  
           
      END
      ELSE
      BEGIN
       Set @pMessage='El numero de la tarjeta no existe'
      END       
    
    END

    Los pasos que realizo son:

    • Verificar si el equipo con el rfid existe en la base de datos.
    • Buscar si ese equipo con el rfid  tiene un registro y obtener el id del registro
    • Si existe un registro de entrada registrar su salida.
    • En caso contrario crear un nuevo registro que registre su entrada.

    Alguien podria ayudarme porfavor.

    miércoles, 30 de mayo de 2018 17:36

Respuestas

  • Hola, el problema es que aca:

    UPDATE Registro_EyS 
    set fechayHrS = GETDATE()
    WHERE id_rfid =@idC

    Estás actualizando todos los registros para ese Id de Equipo, deberías agergarle otro filtro, como este:

    UPDATE Registro_EyS 
    set fechayHrS = GETDATE()
    WHERE id_rfid =@idC
    AND fechayHrE is not null AND fechayHrS is nul

    Saludos.

    • Marcado como respuesta Dhaniel..M jueves, 31 de mayo de 2018 14:23
    miércoles, 30 de mayo de 2018 21:32

Todas las respuestas

  • Hola, el problema es que aca:

    UPDATE Registro_EyS 
    set fechayHrS = GETDATE()
    WHERE id_rfid =@idC

    Estás actualizando todos los registros para ese Id de Equipo, deberías agergarle otro filtro, como este:

    UPDATE Registro_EyS 
    set fechayHrS = GETDATE()
    WHERE id_rfid =@idC
    AND fechayHrE is not null AND fechayHrS is nul

    Saludos.

    • Marcado como respuesta Dhaniel..M jueves, 31 de mayo de 2018 14:23
    miércoles, 30 de mayo de 2018 21:32
  • Hola Buen dia!!

    Muchas gracias tenias razon, yo sabia que no estaba haciendo referencia al id del registro pero no sabia como implementarlo.

    Te lo agradezco era lo que necesitaba.

    Saludos.

    jueves, 31 de mayo de 2018 14:28
  • Una pregunta. como puedo limpiar el buffer de mi puerto serial, debido a que si lee una segunda tarjeta con otro codigo me sigue tomando la anterior y me hace el registro de la otra mas no de la que deberia.

    Cómo podria limpiar mi buffer después de hacer la lectura de una tarjeta?


    • Editado Dhaniel..M jueves, 31 de mayo de 2018 14:36
    jueves, 31 de mayo de 2018 14:32