buen dia. Solicito ayuda con la creación del siguiente SP. El proceso es el siguiente tengo un formulario donde poseo el docentry y un numero de consecutivo con cierto numero de campos, cuando llamo algun consecutivo creado este no debe de permitir modificar ningun campo pero si modifico el numero de consecutivo si debe dejarme guardar los cambios. Gracias
if @object_type in ('ANA_QUI_MP')
begin --Objeto Orden de compra
if @transaction_type in ('A','U')
begin --Actualización o Creación
if ( select COUNT(*)
from [@ALB_ANA_QUI_MP] T0
where T0.DocEntry = @list_of_cols_val_tab_del
GROUP BY T0.DocEntry, T0.[U_Alb_Conse]
having T0.[U_Alb_Conse] in (select TA.[U_Alb_Conse] From [@ALB_ANA_QUI_MP] TA where TA.[U_Alb_Conse] = T0.[U_Alb_Conse])
--and COUNT(*)>1
)>0
begin
set @error= 10
set @error_message = '!!!! ***SP: Ya Existe EL CONSECUTIVO !!!!!!'
end
end
end
Bueno de verdad que no entiendo mucho su consulta pero por lo que entiendo tienes un formulario en el cual tienes varios campos que no quieres que permitan que se cambien? y solo quieres que permita actualizar el número de consecutivo?
Si es así, es posible que en el modo de actualizar de tu formulario, dejes que los campos que no quieres que sean modificados queden como sólo lectura? Así no sería necesario un Transaction para su procedimiento.
hola oscarezh…Gracias, mira si es un formulario creado propio para acá en la empresa, cuando yo llame un registro anteriormente guardado, que si es cambiado algun valor y el docentry y el consecutivo sean iguales no deje actualizar pero si le cambio el consecutivo y algun valor ya guardado anteriormente si me deje actualizar. Gracias por tu apoyo
@bunker pero entonces distes con la respuesta, lo único que debes hacer es lo que precisamente dices.
Donde tu object type sea ANA_QUI_MP y tu transaction type sea update, solo debes validar que tu docentry y tu número consecutivo sean iguales, de ser así das el error con un mensajes “no se puede actualizar” y bueno en cualquier otro caso si lo permitirá.
Gracias… por la respuesta pero es que eso trato de hacer pero he probado esa linea de codigo por todas partes y coloco la condicional pero no me sale la restriccion cuando coloco != me deja actualizar y cuando coloco <> tambien no me aplica no se como mas poder hacer…
Buenas tardes…pues plantee de otra manera que me bloquie no poder hacer actualizaciones a un usuario definido el SP me quedo asi
–If @Object_Type = ‘ANA_QUI_MP’ begin
–if @transaction_type in (‘A’,‘U’)
–Begin
–If (Select ‘True’ From [ALBA_PRUEBAS].[dbo].[@ALB_ANA_QUI_MP] T0
– Where T0.U_Alb_Conse =@list_of_cols_val_tab_del and (t0.Creator not in (‘TOCAJO’) )
– ) =‘True’
–Begin
–Set @error=’-1’
–Set @error_message=‘Usuario NO autorizado a realizar ACTUALIZACIONES’
–End
–End
–end
Buenas tardes, en base a tú primera consulta yo haría algo así:
IF @Object_Type = ‘ANA_QUI_MP’ AND @transaction_type = ‘U’
BEGIN
IF EXISTS (
SELECT 'Error'
FROM [@ALB_ANA_QUI_MP] T0
WHERE T0.DocEntry =@list_of_cols_val_tab_del
AND T0.DocEntry=T0.U_Alb_Conse
)
BEGIN
SET @error = 01
SET @error_message = 'No puede modificar'
END
END
Ahora bien si quisieras restringir a un usuario, yo haría algo así:
IF @Object_Type = ‘ANA_QUI_MP’ AND @transaction_type = ‘U’
BEGIN
IF EXISTS (
SELECT 'Error'
FROM [@ALB_ANA_QUI_MP] T0
WHERE T0.DocEntry =@list_of_cols_val_tab_del
AND T0.Creator='TOCAJO'
)
BEGIN
SET @error = 02
SET @error_message = 'No esta autorizado para realizar cambios'
END
END