Novato necesita ayuda con SP

15/09/2004 - 18:29 por José G Alvarez | Informe spam
Escribi el siguiente Store Procedure

PROCEDURE dbo.Store_Trans_Efectivo
@pCanal int,
@pFecha smalldatetime,
@pTurno tinyint,
@pIdSubClase int,
@pMontoPagado smallmoney,
@pIdUsuario int
AS
DECLARE @vNumTicket int
DECLARE @vIdTransServer int

SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX(IdTransServer) + 1 AS
vIdTransServer FROM mvTransacciones

INSERT INTO mvTransacciones (
[IdTransServer],
[FechaHora],
[Canal],
[Fecha],
[Turno],
[NumTicket],
[IdSubclase],
[MontoPagado],
[IdUsuario],
[IdTipoTrans],
[StInServer])
VALUES (
@vIdTransServer,
GetDate(),
@pCanal,
@pFecha,
@pTurno,
@vNumTicket,
@pIdSubclase,
@pMontoPagado,
@pIdUsuario,
'1',
'1')
GO

Cuando la ejecuto (con el SQL Query Analyzer) me arroja el siguiente error:

"Cannot insert the value NULL into column 'NumTicket', table
'SIPDataBase.dbo.mvTransacciones'; column does not allow nulls. INSERT
fails."

Que estoy haciendo mal?

Gracias de antemano...
José G. Álvarez
Valencia - Venezuela.

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
15/09/2004 - 18:43 | Informe spam
Estás especificando un "alias" para las columnas [MAX(NumTicket) + 1] y [MAX(IdTransServer) + 1] en lugar de almacenar éstos valores en tus variables locales @vNumTicket y @vIdTransServer; o sea, que en lugar de:

SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX(IdTransServer) + 1 AS vIdTransServer FROM mvTransacciones

Haz ésto:

SELECT @vNumTicket = MAX(NumTicket) + 1, @vIdTransServer = MAX(IdTransServer) + 1 FROM mvTransacciones

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon
Respuesta Responder a este mensaje
#2 Tinoco
15/09/2004 - 18:56 | Informe spam
Hola Jose

Creo que este es el problema

SELECT vNumTicket = MAX(NumTicket) + 1,
vIdTransServer = MAX(IdTransServer) + 1
FROM mvTransacciones

*** NO ES ASI ***************
SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX
(IdTransServer) + 1 AS
vIdTransServer FROM mvTransacciones

********************************

Hermilson Tinoco

Escribi el siguiente Store Procedure

PROCEDURE dbo.Store_Trans_Efectivo
@pCanal int,
@pFecha smalldatetime,
@pTurno tinyint,
@pIdSubClase int,
@pMontoPagado smallmoney,
@pIdUsuario int
AS
DECLARE @vNumTicket int
DECLARE @vIdTransServer int

SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX


(IdTransServer) + 1 AS
vIdTransServer FROM mvTransacciones

INSERT INTO mvTransacciones (
[IdTransServer],
[FechaHora],
[Canal],
[Fecha],
[Turno],
[NumTicket],
[IdSubclase],
[MontoPagado],
[IdUsuario],
[IdTipoTrans],
[StInServer])
VALUES (
@vIdTransServer,
GetDate(),
@pCanal,
@pFecha,
@pTurno,
@vNumTicket,
@pIdSubclase,
@pMontoPagado,
@pIdUsuario,
'1',
'1')
GO

Cuando la ejecuto (con el SQL Query Analyzer) me arroja


el siguiente error:

"Cannot insert the value NULL into column 'NumTicket',


table
'SIPDataBase.dbo.mvTransacciones'; column does not allow


nulls. INSERT
fails."

Que estoy haciendo mal?

Gracias de antemano...
José G. Álvarez
Valencia - Venezuela.
Respuesta Responder a este mensaje
#3 José G Alvarez
15/09/2004 - 20:24 | Informe spam
Gracias Rubén "gurú" Vigón...

"Rubén Vigón" escribió en el mensaje
news:
Estás especificando un "alias" para las columnas [MAX(NumTicket) + 1] y
[MAX(IdTransServer) + 1] en lugar de almacenar éstos valores en tus
variables locales @vNumTicket y @vIdTransServer; o sea, que en lugar de:

SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX(IdTransServer) + 1 AS
vIdTransServer FROM mvTransacciones

Haz ésto:

SELECT @vNumTicket = MAX(NumTicket) + 1, @vIdTransServer MAX(IdTransServer) + 1 FROM mvTransacciones

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://www.mvp-access.com/rubenvigon
Respuesta Responder a este mensaje
#4 José G Alvarez
15/09/2004 - 20:24 | Informe spam
Gracias Tinoco

"Tinoco" escribió en el mensaje
news:017f01c49b44$fe231550$
Hola Jose

Creo que este es el problema

SELECT vNumTicket = MAX(NumTicket) + 1,
vIdTransServer = MAX(IdTransServer) + 1
FROM mvTransacciones

*** NO ES ASI ***************
SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX
(IdTransServer) + 1 AS
vIdTransServer FROM mvTransacciones

********************************

Hermilson Tinoco

Escribi el siguiente Store Procedure

PROCEDURE dbo.Store_Trans_Efectivo
@pCanal int,
@pFecha smalldatetime,
@pTurno tinyint,
@pIdSubClase int,
@pMontoPagado smallmoney,
@pIdUsuario int
AS
DECLARE @vNumTicket int
DECLARE @vIdTransServer int

SELECT MAX(NumTicket) + 1 AS vNumTicket, MAX


(IdTransServer) + 1 AS
vIdTransServer FROM mvTransacciones

INSERT INTO mvTransacciones (
[IdTransServer],
[FechaHora],
[Canal],
[Fecha],
[Turno],
[NumTicket],
[IdSubclase],
[MontoPagado],
[IdUsuario],
[IdTipoTrans],
[StInServer])
VALUES (
@vIdTransServer,
GetDate(),
@pCanal,
@pFecha,
@pTurno,
@vNumTicket,
@pIdSubclase,
@pMontoPagado,
@pIdUsuario,
'1',
'1')
GO

Cuando la ejecuto (con el SQL Query Analyzer) me arroja


el siguiente error:

"Cannot insert the value NULL into column 'NumTicket',


table
'SIPDataBase.dbo.mvTransacciones'; column does not allow


nulls. INSERT
fails."

Que estoy haciendo mal?

Gracias de antemano...
José G. Álvarez
Valencia - Venezuela.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida