Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2006
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Thumbs down Pasar parametro DateTime nulo

Holaaaa
Estoy trabajando con un stored procedure que recibe tres fechas que podrian ser ingresadas por el usuario o no. Si el usuario no ingresa una de ellas, y hago
parSendDate.Value =
null;
el stored procedure se rompe, y tiene razon porque no recibe ningun parametro. Hay alguna forma de mandarle la fecha vacia y que el stored procedure lo reconozca? Por las dudas, el query que contiene es este:
Código:
ALTER PROCEDURE dbo.FiltersResultOrden
(@client int, @createdDate datetime, @deliverDate datetime, @sendDate datetime)
AS
SELECT *
FROM Orden
WHERE ((cliente = @client)or(@client = 0))
AND ((fechaCreada = @createdDate)or(@createdDate is null))
AND ((fechaEnviada = @deliverDate)or(@deliverDate is null))
AND ((fechaEntregada = @sendDate)or(@sendDate is null))

Responder Con Cita
  #2  
Antiguo 19-07-2006
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
Podrias asignarle una fecha antigua con lo cual indicarias que no se ingreso nada en ese parametro, asi no llegarian valores nulos y simplemente en el stored procedure validarias si viene el valor por default, con lo cual sabrias que no se ingreso esa fecha.
__________________
Optimus Prime
Responder Con Cita
  #3  
Antiguo 19-07-2006
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
...

Pero dejaria de funcionarme el Stored Procedure, ya que esta hecho para recibir o no tal parametro.

Yanina Genia

Última edición por YaninaGenia fecha: 19-07-2006 a las 20:00:54.
Responder Con Cita
  #4  
Antiguo 20-07-2006
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
Umm tienes razon en eso.

Si es en sql Server puedes en la creacion del stored procedure decirle a el parametro que si no viene ningun valor tome uno por defecto.

Create procedure dbo.FiltersResultOrden (@client int,
@createdDate
datetime = '20000101', @deliverDate datetime = '20000101', @sendDate datetime = '20000101')
AS
SELECT * FROM Orden WHERE ((cliente = @client)or(@client = 0))
AND ((fechaCreada = @createdDate)or(@createdDate is null))
AND ((fechaEnviada = @deliverDate)or(@deliverDate is null))
AND ((fechaEntregada = @sendDate)or(@sendDate is null))

Pregunta, en esos campos se pueden almacenar valores nulos.?
__________________
Optimus Prime
Responder Con Cita
  #5  
Antiguo 20-07-2006
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
tambien puedes igualar el valor del parametro a null.

Código SQL [-]
ALTER PROCEDURE dbo.FiltersResultOrden
(@client int, 
@createdDate datetime = null, 
@deliverDate datetime = null, 
@sendDate datetime = null)
AS
SELECT *
FROM Orden
WHERE (cliente = @client or @client = 0)
AND (fechaCreada = @createdDate or @createdDate is null)
AND (fechaEnviada = @deliverDate or @deliverDate is null)
AND (fechaEntregada = @sendDate or @sendDate is null)
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #6  
Antiguo 21-07-2006
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
....

No puedo preguntarle por null ya que no se pueden enviar parametros nulos al stored procedure, si le envio ese valor me da un cartel de error diciendo que faltaron esos parametros.

Yanina Genia
Responder Con Cita
  #7  
Antiguo 21-07-2006
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Cita:
Empezado por edgusano
Umm tienes razon en eso.

Si es en sql Server puedes en la creacion del stored procedure decirle a el parametro que si no viene ningun valor tome uno por defecto.

Create procedure dbo.FiltersResultOrden (@client int,
@createdDate
datetime = '20000101', @deliverDate datetime = '20000101', @sendDate datetime = '20000101')
AS
SELECT * FROM Orden WHERE ((cliente = @client)or(@client = 0))
AND ((fechaCreada = @createdDate)or(@createdDate is null))
AND ((fechaEnviada = @deliverDate)or(@deliverDate is null))
AND ((fechaEntregada = @sendDate)or(@sendDate is null))

No me va a servir porque el SP va a buscar las fechas con esos valores que yo le asigne en lugar de NO buscar.

Cita:
Empezado por edgusano
Pregunta, en esos campos se pueden almacenar valores nulos.?
No, pero si el usuario ingresa una sola fecha en lugar de todas, tengo que traer todos los resultados que coincidan, no es que voy a preguntar por los campos que esten nulos si el usuario no ingreso nada para ellos.

Yanina Genia
Responder Con Cita
  #8  
Antiguo 21-07-2006
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
Yanina:

Cuando asignas un valor a un parametro al momento de declararlo, automaticamente el parametro es considerado opcional, por lo que no es necesario pasarle valores al parametro (o pasarle un valor nulo), y el procedimiento se ejecutara sin problemas.

En el ejemplo que plantee, puedes verificar que tiene justamente ese comportamiento. Si quieres prueba desde el query analyzer con:

EXEC FiltersResultOrden idcliente, null, fecha

EXEC FiltersResultOrden idcliente, fecha

EXEC FiltersResultOrden idcliente, null, null, fecha

Todos deben ejecutarse correctamente. Lo mismo sucederia en el desarrollo, cuando no le especifiques un valor al parametro, simplemente el valor para el procedimiento sera null, por lo que las condiciones especificadas en el WHERE se ejecutaran de la forma deseada.
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #9  
Antiguo 25-07-2006
YaninaGenia YaninaGenia is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires
Posts: 95
Poder: 19
YaninaGenia Va por buen camino
Smile Si

Hector tenias razon, lo que hice para arreglar mi aplicacion fue modificar el Query del stored procedure:
Código:

ALTER PROCEDURE dbo.FiltersResultOrden
(@client int, @createdDate varchar(10) = null, @deliverDate varchar(10) = null, @sendDate varchar(10) = null)
AS
SELECT *
FROM Orden
WHERE ((cliente = @client)or(@client = 0))
AND ((fechaCreada = @createdDate)or(@createdDate is null))
AND ((fechaEnviada = @deliverDate)or(@deliverDate is null))
AND ((fechaEntregada = @sendDate)or(@sendDate is null))
De esta manera si no le paso parametros toma null por default, antes no me dejaba si no le enviaba todos los parametros a traves del codigo.

Yanina Genia
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
pasar parametro pharaonhx Conexión con bases de datos 3 10-05-2006 19:02:50
pasar parametro con un grid pharaonhx Varios 1 10-04-2005 20:21:56
Pasar un parametro a Rave Reports hook Impresión 1 08-06-2004 19:12:21
pasar un string date a un campo datetime de una tabla Giniromero Conexión con bases de datos 8 12-02-2004 14:58:10
Pasar parametro a un procedimiento? danytorres Varios 2 12-12-2003 09:55:09


La franja horaria es GMT +2. Ahora son las 20:12:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi