SQL Server - Error datetime SP

 
Vista:
Imágen de perfil de Be7or

Error datetime SP

Publicado por Be7or (10 intervenciones) el 25/11/2008 19:33:36
Hola buenas,

Tengo un problemita k me esta atorando demasiado el termino de un proyecto y es que tengo un SP que debe ingresar dos registros a una tabla dependiendo el modulo, uno de los parametros k paso es la fecha actual, lo hago desde asp para evitar que me tome los miliseguindos, el problema esta en k me arroja un error al konvertir datos.

Espero y puedan ayudarme y si es necesario mas informacion diganme.

-----------------------------------------------[stored procedure]-----------------------------------------------

ALTER PROCEDURE [dbo].[closeDetail]
@problem int,
@gpo nvarchar(20),
@seqGpo int,
@modulo nvarchar(20),
@spdate nvarchar(20)
AS
Declare @maxSeq int
Declare @seqStaff int
Declare @pdate datetime
select @spdate = REPLACE(@spdate,'.','')
select @pdate = CONVERT(DATETIME,@spdate)
IF @modulo = 'Inc'
BEGIN
SELECT @seqStaff = [SENT TO] FROM _SMDBA_._TELMASTE_ WHERE SEQUENCE = @problem
SELECT @maxSeq = MAX(SEQUENCE) + 1 FROM _SMDBA_._TELDETAI_
INSERT INTO _SMDBA_._TELDETAI_ (SEQUENCE,[_GROUP_],[PROBLEM #],PERSON,ACTION,[FROM_GROUP:],DESCRIPTION) VALUES (@maxSeq,@seqGpo,@problem,@seqStaff,41,@gpo,'User Defined Status Changed To CLOSED')
INSERT INTO _SMDBA_._TELDETAI_ (SEQUENCE,[_GROUP_],[PROBLEM #],PERSON,ACTION,[FROM_GROUP:],DESCRIPTION) VALUES (@maxSeq + 1,@seqGpo,@problem,@seqStaff,4,@gpo,'Close Call # ' + Ltrim(str(@problem)))
UPDATE dbo.SMSYSRECNUM SET RECNUM = @maxSeq + 1 WHERE NAME = '_TELDETAI_'
END
ELSE
BEGIN
SELECT @seqStaff = [SENT TO] FROM _SMDBA_._WORKORD_ WHERE SEQUENCE = @problem
SELECT @maxSeq = MAX(SEQUENCE) + 1 FROM _SMDBA_._WORKDET_
INSERT INTO _SMDBA_._WORKDET_ (SEQUENCE,[_GROUP_],TTNUM,PERSON,ACTION,[FROM_GROUP:],DESCRIPTION) VALUES (@maxSeq,@seqGpo,@problem,@seqStaff,42,@gpo,'User Defined Status Changed To CLOSED')
INSERT INTO _SMDBA_._WORKDET_ (SEQUENCE,[_GROUP_],TTNUM,PERSON,ACTION,[FROM_GROUP:],DESCRIPTION) VALUES (@maxSeq + 1,@seqGpo,@problem,@seqStaff,15,@gpo,'Closed WO # ' + Ltrim(str(@problem)))
UPDATE dbo.SMSYSRECNUM SET RECNUM = @maxSeq + 1 WHERE NAME = '_WORKDET_'
END

--------------------------------------------[codigo k ejekuta el sp]--------------------------------------------

Dbconn.Execute "EXEC closeDetail " & strSEQ & ",'" & strGPO & "'," & seqGPO & ",'" & strMod & "','" & Now & "'"

----------------------------------------------[error k me muestra]----------------------------------------------

Microsoft OLE DB Provider for ODBC Drivers error '80040e57'

[Microsoft][ODBC SQL Server Driver][SQL Server]Arithmetic overflow error converting expression to data type datetime.

------------------------------------------------------------------------------------------------------------------------

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Be7or

RE:Error datetime SP

Publicado por Be7or (10 intervenciones) el 25/11/2008 23:16:29
Ya me kedo.

----------------------------------------------[Stored Procedure]----------------------------------------------

ALTER PROCEDURE [dbo].[closeDetail]
@problem int,
@gpo nvarchar(20),
@seqGpo int,
@modulo nvarchar(20),
@spdate nvarchar(20)
AS
Declare @maxSeq int
Declare @seqStaff int
Declare @pdate datetime
select @pdate = CONVERT(DATETIME,@spdate)
IF @modulo = 'Inc'
BEGIN
SELECT @seqStaff = [SENT TO] FROM _SMDBA_._TELMASTE_ WHERE SEQUENCE = @problem
SELECT @maxSeq = MAX(SEQUENCE) + 1 FROM _SMDBA_._TELDETAI_
INSERT INTO _SMDBA_._TELDETAI_ (SEQUENCE,[_GROUP_],[PROBLEM #],PDATE,PERSON,ACTION,[FROM_GROUP:],DESCRIPTION) VALUES (@maxSeq,@seqGpo,@problem,@pdate,@seqStaff,41,@gpo,'User Defined Status Changed To CLOSED')
INSERT INTO _SMDBA_._TELDETAI_ (SEQUENCE,[_GROUP_],[PROBLEM #],PDATE,PERSON,ACTION,[FROM_GROUP:],DESCRIPTION) VALUES (@maxSeq + 1,@seqGpo,@problem,@pdate,@seqStaff,4,@gpo,'Close Call # ' + Ltrim(str(@problem)))
UPDATE dbo.SMSYSRECNUM SET RECNUM = @maxSeq + 1 WHERE NAME = '_TELDETAI_'
END
ELSE
BEGIN
SELECT @seqStaff = [SENT TO] FROM _SMDBA_._WORKORD_ WHERE SEQUENCE = @problem
SELECT @maxSeq = MAX(SEQUENCE) + 1 FROM _SMDBA_._WORKDET_
INSERT INTO _SMDBA_._WORKDET_ (SEQUENCE,[_GROUP_],TTNUM,PERSON,ACTION,[FROM_GROUP:],DESCRIPTION) VALUES (@maxSeq,@seqGpo,@problem,@seqStaff,42,@gpo,'User Defined Status Changed To CLOSED')
INSERT INTO _SMDBA_._WORKDET_ (SEQUENCE,[_GROUP_],TTNUM,PERSON,ACTION,[FROM_GROUP:],DESCRIPTION) VALUES (@maxSeq + 1,@seqGpo,@problem,@seqStaff,15,@gpo,'Closed WO # ' + Ltrim(str(@problem)))
UPDATE dbo.SMSYSRECNUM SET RECNUM = @maxSeq + 1 WHERE NAME = '_WORKDET_'
END

-------------------------------------------[codigo k ejekuta el sp]-------------------------------------------

Dbconn.Execute "EXEC closeDetail " & strSEQ & ",'" & strGPO & "'," & seqGPO & ",'" & strMod & "','" & month(now) & "/" & day(now) & "/" & year(now) & " " & hour(now) & ":" & minute(now) & ":" & second(now) & "'"

---------------------------------------------------------------------------------------------------------------------

Gracias por la ayuda
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

RE:Error datetime SP

Publicado por Isaias (3308 intervenciones) el 26/11/2008 22:33:39
Si tu base la migras a otro servidor con otro COLLATE o con otro lenguaje (ya no se diga 2008 o 2005), te seguira dando problemas.

Para evitarlos, SIEMPRE MANEJA LOS FORMATOS DE FECHAS con ANSI.

yyyymmdd hh:mm:ss, nnn

Y veras que no tienes problema alguno
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