on 01-25-2011 3:34 PM
BUEN DIA A TODOS!
QUIERO SOLICITARLES SU AYUDA PARA RESOLVER ESTE PROBLEMITA, ESTOY VALIDANDO QUE EL INGRESO DE NUMEROS DE SERIE DE MIS ARTICULOS SEA DE LARGO (15), NI MAS NI MENOS, PERO TENGO 2 NUMEROS DE SERIE EN ALGUNOS ARTICULOS.
AHORA BIEN EN EL SP_TRANSACTIONNOTIFICATION TENGO ESTA VALIDACION:
-- NUMEROS DE SERIE DE LARGO (15)
IF (@object_type = 20) and @transaction_type IN ('A', 'U')
BEGIN
-- Numero de Serie 1
DECLARE @NumSeries as NVarchar (15)
SET @NumSeries = (SELECT T0.DistNumber
FROM OSRN T0
LEFT JOIN PDN1 T1 ON T0.ItemCode = T1.ItemCode
WHERE T1.DocEntry = @list_of_cols_val_tab_del)
IF (@NumSeries <> (15) )
BEGIN
SET @error = 103
SET @error_message = 'El Numero de Serie Ingresado es Incorrecto'
END
END
-- NUMEROS DE SERIE DE LARGO (15)
IF (@object_type = 20) and @transaction_type IN('A', 'U')
BEGIN
-- Numero de Serie 2
DECLARE @NumSeries2 as NVarchar (15)
SET @NumSeries2 = (SELECT T0.U_DistNumber2
FROM OSRN T0
LEFT JOIN PDN1 T1 ON T0.ItemCode = T1.ItemCode
WHERE T1.DocEntry = @list_of_cols_val_tab_del)
IF (@NumSeries2 <> (15) )
BEGIN
SET @error = 103
SET @error_message = 'El Numero de Serie Ingresado es Incorrecto'
END
END
EL ERROR ME DICE QUE LA SUBQUERY ARROJA MAS DE UN RESULTADO Y ESTO NO ES PERMITIDO CUANDO NE LA SUBQUERY HAY EXPRESIONES COMO LA SIGUIENTE =,!=,<,>,<=,>=...
SI ALGUIEN TIENE LA SOLUCION LE AGRADECERE.
DESTACO TAMBIEN QUE NO SIEMPRE HAY 2 NUMEROS DE SERIE EN ALGUNOS CASOS EL PRODUCTO LOS TRAE PERO ES NADA MAS EL 20% DE LOS MISMOS.
QUE PENA, GRACIAS A QUIENES LEYERON EL POST Y PARA QUIENES NECESITEN ESTA VALIDACION DE ESTA MANERA SE HACE
-- NUMEROS DE SERIE DE LARGO (15)
IF (@object_type = 20) and @transaction_type IN ('A', 'U')
BEGIN
DECLARE @NumSeries as NVarchar (15)
SELECT @NumSeries = LEN(T0.DistNumber)
FROM OSRN T0
LEFT JOIN PDN1 T1 ON T0.ItemCode = T1.ItemCode
WHERE T1.DocEntry = @list_of_cols_val_tab_del
IF (@NumSeries>0 AND @NumSeries != 15)
BEGIN
SET @error = 103
SET @error_message = 'El Numero de Serie Ingresado es Incorrecto'
END
ELSE
DECLARE @NumSeries2 as NVarchar (15)
SELECT @NumSeries2 = LEN(T0.U_DistNumber2)
FROM OSRN T0
LEFT JOIN PDN1 T1 ON T0.ItemCode = T1.ItemCode
WHERE T1.DocEntry = @list_of_cols_val_tab_del
IF @NumSeries2>0 AND @NumSeries2 != 15
BEGIN
SET @error = 103
SET @error_message = 'El Numero de Serie Ingresado es Incorrecto'
END
END
BIEN FELIPE ASI ESTAMOS DE ACUERDO?
GRACIAS MAURICIO TENES RAZON ENLAS DOS APRECIACIONES, NO HABIA LEIDO TU RESPUESTA PUES ESTOY EN VARIAS COSAS AHORITA PERO NO QUIERO ESTORBAR EL FORO CON ESTA PREGUNTA ABIERTA ASI QUE LA DAMOS POR CERRADA
Edited by: AlexMeza on Jan 25, 2011 5:25 PM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Te comento lo siguiente
veo que necesitas hacer un select top 1 para que no te mande el error pues la variable no podra almacenar mas de 1 resultado, supongo que ese error no te lo manda si metes un solo articulo en la pdn1
Tambien te comento que para validar la longitud necesitarias un
if LEN(@numeroserie)>15
para validar si pasa o no de 15 caracteres
Otra opcion para que te traiga un solo resultado es que utilices un count en el primer select, donde traes el numero de serie
por ejemplo
DECLARE @cuenta as numeric (15)
SET @cuenta = (SELECT count (T0.DistNumber)
FROM OSRN T0
LEFT JOIN PDN1 T1 ON T0.ItemCode = T1.ItemCode
WHERE T1.DocEntry = @list_of_cols_val_tab_del and LEN (t0.distnumber)>15)
IF @cuenta>=1
BEGIN
SET @error = 103
SET @error_message = 'El Numero de Serie Ingresado es Incorrecto'
END
algo asi
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Buenas Alex
Prueba esta validacion
-- NUMEROS DE SERIE DE LARGO (15)
IF (@object_type = 20) and @transaction_type IN ('A','U')
BEGIN
-- Numero de Serie 1
DECLARE @NumSeries as NVarchar (15)
SET @NumSeries = (SELECT Len(T0.DistNumber)
FROM OSRN T0
LEFT JOIN PDN1 T1 ON T0.ItemCode = T1.ItemCode
WHERE T1.DocEntry = @list_of_cols_val_tab_del)
IF (@NumSeries > '15')
BEGIN
SET @error = 103
SET @error_message = 'El Numero de Serie Ingresado es Incorrecto'
END
END
-- NUMEROS DE SERIE DE LARGO (15)
IF (@object_type = 20) and @transaction_type IN('A','U')
BEGIN
-- Numero de Serie 2
DECLARE @NumSeries2 as NVarchar (15)
SET @NumSeries2 = (SELECT Len(T0.U_DistNumber2)
FROM OSRN T0
LEFT JOIN PDN1 T1 ON T0.ItemCode = T1.ItemCode
WHERE T1.DocEntry = @list_of_cols_val_tab_del)
IF (@NumSeries2 > '15')
BEGIN
SET @error = 103
SET @error_message = 'El Numero de Serie Ingresado es Incorrecto'
END
END
Saludos
Edited by: Floyola on Jan 25, 2011 1:09 PM
Edited by: Floyola on Jan 25, 2011 1:10 PM
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
100 | |
12 | |
11 | |
6 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.