SQL Server - procedimiento almacenado UPDATE

 
Vista:
sin imagen de perfil

procedimiento almacenado UPDATE

Publicado por JULIO CORONA R. (5 intervenciones) el 06/01/2014 23:49:34
Hola
Un saludo.

Tengo un conflicto, al dar de alta usuarios se les asigna una hora de entrada, cuando salen se les asigna la hora de salida, aqui tengo problemas! Al buscar la matricula "Al actualizar el usuario afecta todos los registros con esa matricula" , lo que necesito es que solo se modifique cuando 'hora_salida' este vacia:



Procedimiento en SQLServer 2008:

USE [control]
GO
/****** Object: StoredProcedure [dbo].[horasalida] Script Date: 01/06/2014 15:14:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[horasalida]
@ma nchar(40),
@h_salida varchar(30)
AS
UPDATE acceso_libre SET hora_salida=@h_salida WHERE matricula=@ma
RETURN
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

procedimiento almacenado UPDATE

Publicado por Isaias (4558 intervenciones) el 06/01/2014 23:57:13
Y en tu filtro (WHERE), donde esta la condición de que hora_salida sea vacia o nula???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

procedimiento almacenado UPDATE

Publicado por Julio (5 intervenciones) el 07/01/2014 00:03:07
no se como!! ya intente varias opciones pero tengo errores de sintaxis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

procedimiento almacenado UPDATE

Publicado por Julio (5 intervenciones) el 07/01/2014 00:06:10
acabo de probar esto pero no funciona...


UPDATE acceso_libre SET hora_salida=@h_salida WHERE matricula=@ma and hora_salida is null
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

procedimiento almacenado UPDATE

Publicado por JULIO CORONA R. (5 intervenciones) el 07/01/2014 03:27:38
Solucionado!!
XD


USE [control]
GO
/****** Object: StoredProcedure [dbo].[horasalida] Script Date: 01/06/2014 20:25:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[horasalida]
@ma nchar(40),
@h_salida varchar(30)
AS
UPDATE acceso_libre
SET hora_salida = @h_salida
WHERE hora_salida in ('') and matricula=@ma
RETURN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 63
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

procedimiento almacenado UPDATE

Publicado por xve (102 intervenciones) el 07/01/2014 08:02:22
Gracias por comentarlo Julio!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

procedimiento almacenado UPDATE

Publicado por Isaias (4558 intervenciones) el 07/01/2014 17:23:28
Difiero de Julio, el IN es sumamente lento en comparar.

Yo haría WHERE myfecha = ''

O bien.

Where len(myfecha) = 0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

procedimiento almacenado UPDATE

Publicado por julio corona (5 intervenciones) el 10/01/2014 01:01:54
gracias..!!!
probare
Where len(myfecha) = 0

por algun motivo no funciona "WHERE myfecha = ''
opte por el metodo q expuse por que probe con
where campo_fecha is NULL.. = NULL y no me funciono..

gracias por comentar!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

procedimiento almacenado UPDATE

Publicado por Isaias (4558 intervenciones) el 10/01/2014 19:44:41
Tienes razón, todos los campos de tipo fecha, no son null, ni tampoco son '' (vacio).

Tienen una fecha por default cuyo año inicia en '1900-01-01'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar