Error de conversion

22/08/2007 - 22:51 por Edwin Alfaro | Informe spam
Hola amigos estoy trabado en una cadena de consulta
la cual la genero dentro de un procedimeinto almacenado segun varios
parametro

he tratado de resumir el problema para que sea mas visible el caso:

** Basicamente quiero obtener los Recibos de pago entre una fechaINI y una
FechaFIN las cuales paso como parametros
pero al momento de concatenar la expresion en la variable @cSQL me da un
error de conversion de tipo smalldatatime

He probaso con las dos formas con los parametros como texto y como
smalldatetime. sin resultado positivo.

Porfavor si me dan alguna luz al respecto.

******
ALTER PROCEDURE [dbo].[sp_SubConsultaReporte]
@FechaIni nvarchar(12) ,
@FechaFin nvarchar(12) ,

AS
BEGIN

DECLARE @cSQL nvarchar(400)

SET @cSQL = 'SELECT RecibosMov.RECIBONRO, RecibosMov.COD_ALUMNO,
Maestro.APEPAT '
SET @cSQL = @cSQL + 'FROM Maestro INNER JOIN RecibosMov ON
Maestro.COD_ALUMNO = RecibosMov.COD_ALUMNO '



SET @cSQL = @cSQL + 'WHERE (RecibosMov.FECREC >= '+ ''' + @FechaIni + '')' +
' AND (RecibosMov.FECREC <= '+''' + @FechaFin +'''+ ') '
convert(smalldatetime,@FechaIni) + ' AND RecibosMov.FECREC <= ' +
convert(smalldatetime,@FechaFin) + ') '

EXECUTE (@cSQL)



END

**********

Preguntas similare

Leer las respuestas

#1 Isaias
23/08/2007 - 00:02 | Informe spam
Primero, ya no uses el EXEC(Cadena), cambialo por EXEC SP_EXECUTESQL
@MyNvarchar

Segundo, ¿Que formato llevan tus fechas?

Deberia ser ANSI, yyyy-mm-dd -o- yyyymmdd, ¿es asi?
Saludos
IIslas


"Edwin Alfaro" wrote:

Hola amigos estoy trabado en una cadena de consulta
la cual la genero dentro de un procedimeinto almacenado segun varios
parametro

he tratado de resumir el problema para que sea mas visible el caso:

** Basicamente quiero obtener los Recibos de pago entre una fechaINI y una
FechaFIN las cuales paso como parametros
pero al momento de concatenar la expresion en la variable @cSQL me da un
error de conversion de tipo smalldatatime

He probaso con las dos formas con los parametros como texto y como
smalldatetime. sin resultado positivo.

Porfavor si me dan alguna luz al respecto.

******
ALTER PROCEDURE [dbo].[sp_SubConsultaReporte]
@FechaIni nvarchar(12) ,
@FechaFin nvarchar(12) ,

AS
BEGIN

DECLARE @cSQL nvarchar(400)

SET @cSQL = 'SELECT RecibosMov.RECIBONRO, RecibosMov.COD_ALUMNO,
Maestro.APEPAT '
SET @cSQL = @cSQL + 'FROM Maestro INNER JOIN RecibosMov ON
Maestro.COD_ALUMNO = RecibosMov.COD_ALUMNO '



SET @cSQL = @cSQL + 'WHERE (RecibosMov.FECREC >= '+ ''' + @FechaIni + '')' +
' AND (RecibosMov.FECREC <= '+''' + @FechaFin +'''+ ') '
convert(smalldatetime,@FechaIni) + ' AND RecibosMov.FECREC <= ' +
convert(smalldatetime,@FechaFin) + ') '

EXECUTE (@cSQL)



END

**********




Respuesta Responder a este mensaje
#2 Edwin
23/08/2007 - 02:06 | Informe spam
Hola Isaias

Dentro del Procedimiento almacenado estoy creando una cadena cSQL

la cual tiene en su parte :

1) SET @cSQL = @cSQL + 'WHERE (RecibosMov.FECREC >= '+ @FechaIni + ')' + '
AND (RecibosMov.FECREC <= ' + @FechaFin + ') '


cuando llamo al procedimiento lo hago de la siguiente manera:

2) sp_SubConsultaReporte '01/01/2007' , '20/08/2007'

Obteniendo una cadena de la siguiente forma:


3)
SELECT RecibosMov.RECIBONRO, RecibosMov.COD_ALUMNO, Maestro.APEPAT as
nombres
FROM Maestro INNER JOIN RecibosMov ON Maestro.COD_ALUMNO =
RecibosMov.COD_ALUMNO
WHERE (RecibosMov.FECREC >= 01/01/2007) AND (RecibosMov.FECREC <=
20/08/2007)

*** El caso es que esta me devuelve una consulta vacia, haciendo pruebas con
esta cadena :resulta que si coloco la fecha final (20/08/2007) entre
comillas (')
alli si obtengo el resultado requerido.
Como puedo hacer que mi expresion "1)" me genere la cadena @cSQL con las
comillas incluidas?
Aunque no entiendo porque me exige las comillas solo para la @FechaFin
mientras que si trabaja bien para @FechaIni.

Gracias por la ayuda que me puedas dar.

Saludos,

Edwin.




"Isaias" escribió en el mensaje
news:
Primero, ya no uses el EXEC(Cadena), cambialo por EXEC SP_EXECUTESQL
@MyNvarchar

Segundo, ¿Que formato llevan tus fechas?

Deberia ser ANSI, yyyy-mm-dd -o- yyyymmdd, ¿es asi?
Saludos
IIslas


"Edwin Alfaro" wrote:

Hola amigos estoy trabado en una cadena de consulta
la cual la genero dentro de un procedimeinto almacenado segun varios
parametro

he tratado de resumir el problema para que sea mas visible el caso:

** Basicamente quiero obtener los Recibos de pago entre una fechaINI y
una
FechaFIN las cuales paso como parametros
pero al momento de concatenar la expresion en la variable @cSQL me da un
error de conversion de tipo smalldatatime

He probaso con las dos formas con los parametros como texto y como
smalldatetime. sin resultado positivo.

Porfavor si me dan alguna luz al respecto.

******
ALTER PROCEDURE [dbo].[sp_SubConsultaReporte]
@FechaIni nvarchar(12) ,
@FechaFin nvarchar(12) ,

AS
BEGIN

DECLARE @cSQL nvarchar(400)

SET @cSQL = 'SELECT RecibosMov.RECIBONRO, RecibosMov.COD_ALUMNO,
Maestro.APEPAT '
SET @cSQL = @cSQL + 'FROM Maestro INNER JOIN RecibosMov ON
Maestro.COD_ALUMNO = RecibosMov.COD_ALUMNO '



SET @cSQL = @cSQL + 'WHERE (RecibosMov.FECREC >= '+ ''' + @FechaIni +
'')' +
' AND (RecibosMov.FECREC <= '+''' + @FechaFin +'''+ ') '
convert(smalldatetime,@FechaIni) + ' AND RecibosMov.FECREC <= ' +
convert(smalldatetime,@FechaFin) + ') '

EXECUTE (@cSQL)



END

**********







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