Problema en Store Procedure

06/12/2004 - 20:25 por DiegoC | Informe spam
Hola, tengo este Store Procedure para que me devuelva los dias del mes en
los cuales hay rangos de horarios determinados, el problema esta en que
cuendo corro desde VB esto:

cadena = "sp_Horarios '" & '20041201' & "'," & 1 & ",'" & 1 & "'"
rs.Open cadena, ADOcnDatos, adOpenForwardOnly, adLockReadOnly

se ejecura pero rs me queda vacio, no tengo nada.
No entiendo porque, ya que con otros SP, mas sensillos, que hacen un Select
con parametros y coas por el estilo, en rs si me devuelve el recorset con
los datos.
Se que este NO es un foro de programacion, pero el error mio creo que esta
en el SP.

Desde ya muchas gracias y aqui abajo pongo el SP:

CREATE PROCEDURE sp_Horarios
@FechaAAMM datetime,
@IdMedico int,
@IdSede varchar(2)
AS

Declare @i int
Declare @HD varchar(5)
Declare @HH varchar(5)
Declare @Fecha datetime
Declare @DiaS int

create table #tmes (dia int, hh varchar(5), hd varchar(5))
Select @i = 0
While (@i < 30)
Begin
Select @Fecha = Dateadd(dd,@i,@FechaAAMM)
Select @DiaS = DatePart(dw,@Fecha)
Select @HH = ''
Select @HD = ''
SELECT @HH = HoraHasta,@HD = HoraDesde From TurnosDef
Where VigDesde <= @FechaAAMM And VigHasta >= @FechaAAMM
And (Select Max(VigDesde) From TurnosDef Where VigDesde < @FechaAAMM And IdMedico = @IdMedico And
VigHasta >= @FechaAAMM)

= VigDesde And IdMedico = @IdMedico And IdSede = @IdSede And


Dia = @DiaS
ORDER BY VigDesde DESC, Dia, HoraDesde
Select @i = @i + 1
INSERT INTO #tmes Values(@i,@HD,@HH)
End
Select * From #tmes
GO

Preguntas similare

Leer las respuestas

#1 ulises
06/12/2004 - 20:55 | Informe spam
Utiliza SET NOCOUNT ON al inicio del procedimiento.

Saludos,
Ulises

Hola, tengo este Store Procedure para que me devuelva los


dias del mes en
los cuales hay rangos de horarios determinados, el


problema esta en que
cuendo corro desde VB esto:

cadena = "sp_Horarios '" & '20041201' & "'," & 1 &


",'" & 1 & "'"
rs.Open cadena, ADOcnDatos, adOpenForwardOnly,


adLockReadOnly

se ejecura pero rs me queda vacio, no tengo nada.
No entiendo porque, ya que con otros SP, mas sensillos,


que hacen un Select
con parametros y coas por el estilo, en rs si me devuelve


el recorset con
los datos.
Se que este NO es un foro de programacion, pero el error


mio creo que esta
en el SP.

Desde ya muchas gracias y aqui abajo pongo el SP:

CREATE PROCEDURE sp_Horarios
@FechaAAMM datetime,
@IdMedico int,
@IdSede varchar(2)
AS

Declare @i int
Declare @HD varchar(5)
Declare @HH varchar(5)
Declare @Fecha datetime
Declare @DiaS int

create table #tmes (dia int, hh varchar(5), hd varchar(5))
Select @i = 0
While (@i < 30)
Begin
Select @Fecha = Dateadd(dd,@i,@FechaAAMM)
Select @DiaS = DatePart(dw,@Fecha)
Select @HH = ''
Select @HD = ''
SELECT @HH = HoraHasta,@HD = HoraDesde From TurnosDef
Where VigDesde <= @FechaAAMM And VigHasta >= @FechaAAMM
And (Select Max(VigDesde) From TurnosDef Where VigDesde <> @FechaAAMM And IdMedico = @IdMedico And
VigHasta >= @FechaAAMM)
>= VigDesde And IdMedico = @IdMedico And IdSede = @IdSede And
Dia = @DiaS
ORDER BY VigDesde DESC, Dia, HoraDesde
Select @i = @i + 1
INSERT INTO #tmes Values(@i,@HD,@HH)
End
Select * From #tmes
GO


.

Respuesta Responder a este mensaje
#2 DiegoC
06/12/2004 - 21:00 | Informe spam
FUNCIONA !!!

Muchisimas Gracias.

Ahi estaba mi problema.

Saludos, Diego



"ulises" escribió en el mensaje
news:185e01c4dbcd$81577e70$
Utiliza SET NOCOUNT ON al inicio del procedimiento.

Saludos,
Ulises

>Hola, tengo este Store Procedure para que me devuelva los
dias del mes en
>los cuales hay rangos de horarios determinados, el
problema esta en que
>cuendo corro desde VB esto:
>
> cadena = "sp_Horarios '" & '20041201' & "'," & 1 &
",'" & 1 & "'"
> rs.Open cadena, ADOcnDatos, adOpenForwardOnly,
adLockReadOnly
>
>se ejecura pero rs me queda vacio, no tengo nada.
>No entiendo porque, ya que con otros SP, mas sensillos,
que hacen un Select
>con parametros y coas por el estilo, en rs si me devuelve
el recorset con
>los datos.
>Se que este NO es un foro de programacion, pero el error
mio creo que esta
>en el SP.
>
>Desde ya muchas gracias y aqui abajo pongo el SP:
>
>CREATE PROCEDURE sp_Horarios
>@FechaAAMM datetime,
>@IdMedico int,
>@IdSede varchar(2)
>AS
>
>Declare @i int
>Declare @HD varchar(5)
>Declare @HH varchar(5)
>Declare @Fecha datetime
>Declare @DiaS int
>
>create table #tmes (dia int, hh varchar(5), hd varchar(5))
>Select @i = 0
>While (@i < 30)
>Begin
> Select @Fecha = Dateadd(dd,@i,@FechaAAMM)
> Select @DiaS = DatePart(dw,@Fecha)
> Select @HH = ''
> Select @HD = ''
> SELECT @HH = HoraHasta,@HD = HoraDesde From TurnosDef
> Where VigDesde <= @FechaAAMM And VigHasta >= @FechaAAMM
> And (Select Max(VigDesde) From TurnosDef Where VigDesde <> > @FechaAAMM And IdMedico = @IdMedico And
> VigHasta >= @FechaAAMM)
> >= VigDesde And IdMedico = @IdMedico And IdSede = @IdSede And
> Dia = @DiaS
> ORDER BY VigDesde DESC, Dia, HoraDesde
> Select @i = @i + 1
> INSERT INTO #tmes Values(@i,@HD,@HH)
>End
>Select * From #tmes
>GO
>
>
>.
>
Respuesta Responder a este mensaje
#3 Javier Loria
06/12/2004 - 22:14 | Informe spam
Hola:
De paso podrias pensar en eliminar la tabla temporal para que el codigo
funcione mejor.
Asumiendo que tienen una tabla de numeros creada del tipo:
== CREATE TABLE Numeros(
Numero INT PRIMARY KEY NOT NULL
)
= Y que esta tabla esta llena e numeros (por los menos 31)
Entonces la consulta podria ser escrita como:
=CREATE PROC
AS
SET NOCOUNT ON
SELECT Numeros.Numero
, HoraHasta AS HH
, HoraDesde as HD
FROM TurnosDef
CROSS JOIN Numeros
WHERE VigDesde <= @FechaAAMM
AND VigHasta >= @FechaAAMM
AND (Select Max(VigDesde)
From TurnosDef
Where VigDesde <= @FechaAAMM
AND IdMedico = @IdMedico
AND VigHasta >= @FechaAAMM)>= VigDesde
AND IdMedico = @IdMedico
AND IdSede = @IdSede
AND Dia = DatePart(dw,Dateadd(dd,Numeros.Numero,@FechaAAMM))
AND Numeros.Numero<30
ORDER BY VigDesde DESC, Dia, HoraDesde
= Tal vez podrias probarlo?
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"DiegoC" wrote in message
news:
Hola, tengo este Store Procedure para que me devuelva los dias del mes en
los cuales hay rangos de horarios determinados, el problema esta en que
cuendo corro desde VB esto:

cadena = "sp_Horarios '" & '20041201' & "'," & 1 & ",'" & 1 & "'"
rs.Open cadena, ADOcnDatos, adOpenForwardOnly, adLockReadOnly

se ejecura pero rs me queda vacio, no tengo nada.
No entiendo porque, ya que con otros SP, mas sensillos, que hacen un


Select
con parametros y coas por el estilo, en rs si me devuelve el recorset con
los datos.
Se que este NO es un foro de programacion, pero el error mio creo que esta
en el SP.

Desde ya muchas gracias y aqui abajo pongo el SP:

CREATE PROCEDURE sp_Horarios
@FechaAAMM datetime,
@IdMedico int,
@IdSede varchar(2)
AS

Declare @i int
Declare @HD varchar(5)
Declare @HH varchar(5)
Declare @Fecha datetime
Declare @DiaS int

create table #tmes (dia int, hh varchar(5), hd varchar(5))
Select @i = 0
While (@i < 30)
Begin
Select @Fecha = Dateadd(dd,@i,@FechaAAMM)
Select @DiaS = DatePart(dw,@Fecha)
Select @HH = ''
Select @HD = ''
SELECT @HH = HoraHasta,@HD = HoraDesde From TurnosDef
Where VigDesde <= @FechaAAMM And VigHasta >= @FechaAAMM
And (Select Max(VigDesde) From TurnosDef Where VigDesde <> @FechaAAMM And IdMedico = @IdMedico And
VigHasta >= @FechaAAMM)
>= VigDesde And IdMedico = @IdMedico And IdSede = @IdSede And
Dia = @DiaS
ORDER BY VigDesde DESC, Dia, HoraDesde
Select @i = @i + 1
INSERT INTO #tmes Values(@i,@HD,@HH)
End
Select * From #tmes
GO


Respuesta Responder a este mensaje
#4 DiegoC
07/12/2004 - 13:47 | Informe spam
Ok.

Muchas gracias.

Saludos, Diego

"Javier Loria" escribió en el mensaje
news:
Hola:
De paso podrias pensar en eliminar la tabla temporal para que el


codigo
funcione mejor.
Asumiendo que tienen una tabla de numeros creada del tipo:
==> CREATE TABLE Numeros(
Numero INT PRIMARY KEY NOT NULL
)
=> Y que esta tabla esta llena e numeros (por los menos 31)
Entonces la consulta podria ser escrita como:
=> CREATE PROC
AS
SET NOCOUNT ON
SELECT Numeros.Numero
, HoraHasta AS HH
, HoraDesde as HD
FROM TurnosDef
CROSS JOIN Numeros
WHERE VigDesde <= @FechaAAMM
AND VigHasta >= @FechaAAMM
AND (Select Max(VigDesde)
From TurnosDef
Where VigDesde <= @FechaAAMM
AND IdMedico = @IdMedico
AND VigHasta >= @FechaAAMM)>= VigDesde
AND IdMedico = @IdMedico
AND IdSede = @IdSede
AND Dia = DatePart(dw,Dateadd(dd,Numeros.Numero,@FechaAAMM))
AND Numeros.Numero<30
ORDER BY VigDesde DESC, Dia, HoraDesde
=> Tal vez podrias probarlo?
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"DiegoC" wrote in message
news:
> Hola, tengo este Store Procedure para que me devuelva los dias del mes


en
> los cuales hay rangos de horarios determinados, el problema esta en que
> cuendo corro desde VB esto:
>
> cadena = "sp_Horarios '" & '20041201' & "'," & 1 & ",'" & 1 &


"'"
> rs.Open cadena, ADOcnDatos, adOpenForwardOnly, adLockReadOnly
>
> se ejecura pero rs me queda vacio, no tengo nada.
> No entiendo porque, ya que con otros SP, mas sensillos, que hacen un
Select
> con parametros y coas por el estilo, en rs si me devuelve el recorset


con
> los datos.
> Se que este NO es un foro de programacion, pero el error mio creo que


esta
> en el SP.
>
> Desde ya muchas gracias y aqui abajo pongo el SP:
>
> CREATE PROCEDURE sp_Horarios
> @FechaAAMM datetime,
> @IdMedico int,
> @IdSede varchar(2)
> AS
>
> Declare @i int
> Declare @HD varchar(5)
> Declare @HH varchar(5)
> Declare @Fecha datetime
> Declare @DiaS int
>
> create table #tmes (dia int, hh varchar(5), hd varchar(5))
> Select @i = 0
> While (@i < 30)
> Begin
> Select @Fecha = Dateadd(dd,@i,@FechaAAMM)
> Select @DiaS = DatePart(dw,@Fecha)
> Select @HH = ''
> Select @HD = ''
> SELECT @HH = HoraHasta,@HD = HoraDesde From TurnosDef
> Where VigDesde <= @FechaAAMM And VigHasta >= @FechaAAMM
> And (Select Max(VigDesde) From TurnosDef Where VigDesde <> > @FechaAAMM And IdMedico = @IdMedico And
> VigHasta >= @FechaAAMM)
> >= VigDesde And IdMedico = @IdMedico And IdSede = @IdSede And
> Dia = @DiaS
> ORDER BY VigDesde DESC, Dia, HoraDesde
> Select @i = @i + 1
> INSERT INTO #tmes Values(@i,@HD,@HH)
> End
> Select * From #tmes
> GO
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida