recurriendo a los expertos estoy tratando de bloquear un campo creado por el usuario que se llama U_categoria, el cual quiero ponerlo como campo obligatorio.
If @object_type = '22' and @transaction_type IN ('A','U')
BEGIN
declare @categoria as nvarchar(10)
select @categoria = '-1000'
SELECT @categoria=isnull(U_categoria,'-1000')
From OPOR WHERE U_categoria = @list_of_cols_val_tab_del
IF @Descripcion = '-1000'
BEGIN
SET @error = -9090
SET @error_message = 'El Campo Categoria no puede estar vacio'
END
END
logre hacerlo funcionar mediante la siguiente consulta
If @object_type = '22' and @transaction_type IN ('A','U')
BEGIN
declare @categoria as nvarchar(10)
select @categoria = '-1000'
SELECT @categoria=isnull(U_categoria,'-1000')
From OPOR WHERE U_categoria = @list_of_cols_val_tab_del
IF @categoria = '-1000'
BEGIN
SET @error = -9090
SET @error_message = 'El Campo Categoria no puede estar vacio'
END
END
pero tengo una duda mi campo es de la siguiente caracteristica pero al poner el campo no me dice que es vacio.
SI tu campo es de tipo lista, nunca deberia estar vacio, antes de hacer una validacion, te sugiero definir bien el UDF, marcas que no permita valores nulos y pones uno de los valores por defecto, con esto te evitas codigo del bloqueo en el TN.
Mira este ejemplo:
Es una buena opción la que comenta @Willy_Caldero pero ya me toco que no puede estar vació y tampoco con una opción por defecto, la solución fue crear una opción del tipo Valor = ‘N’ descripción =‘Selecciona un valor’, la opcion N es el valor por default y en el transaction bloqueas cuando el valor es N
tengo la consulta de la siguiente manera ya cree los campos tal cual hiciste el ejemplo pero dentro de la consulta donde puedo ponerle si el valor es NA
If @object_type = '22' and @transaction_type IN ('A','U')
BEGIN
declare @categoria as nvarchar(10)
select @categoria = 'NA'
SELECT @categoria=isnull (U_categoria,'NA')
From OPOR WHERE U_categoria = @list_of_cols_val_tab_del
IF @categoria = 'NA'
BEGIN
SET @error = -9090
SET @error_message = 'El Campo Categoria no puede estar vacio'
END
END
Buen Dia les comparto la solucion para que el que le vaya a servir
muchas gracias a todos por su apoyo
IF @object_type = '1470000113' AND (@transaction_type = 'A' OR @transaction_type = 'U')
BEGIN
IF @transaction_type = 'A' or @transaction_type = 'U'
BEGIN
SET @categoria1=( SELECT t0.U_categoria FROM OPRQ T0 where DocEntry = @list_of_cols_val_tab_del)
IF @categoria1='NA'
BEGIN
SELECT @error = 30
SELECT @error_message = 'El documento no puede ser creado seleccione CATEGORIA'
END
END
END
Un detalle estas usando tipo de transaccion U , o sea actualizar , y todos aquellos documentos generados previos a la creacion del campo U_categoria tendran valor null , por lo que en la query
SET @categoria1=( SELECT t0.U_categoria FROM OPRQ T0 where DocEntry = @list_of_cols_val_tab_del)
deberia usar un isnull(t0.U_categoria,‘NA’) , y asi los documentos antiguos que sean actulizados seran controlados tambien.
buen dia francisco gracias por su observacion en mi transaction, lo que pasa es que los demas documentos no se actualizaran debido a que no entraran en la consulta de mi sistema, me dijieron en mi empresa que empezara a trabajar, y a partir del viernes pasado todo documento tendra su validacion, ahora voy a trabajar en una alerta para que le avise a mi compañera mediante una alerta que revise un reporte de igual manera para solicitudes de compra y asi les de el seguimiento esperado. en dicho reporte contemplo lo que ya esta cerrado y lo que esta abierto.