No permitir duplicar RFC

Hola, buen día,

Me están solicitando que agregue una validación que no permita crear un SN mas de una vez, pensé en poner una validación en el TN donde consultara el RFC sin embargo no sé contra qué comparar para determinar si ya existe o no, mi consulta está así, y mi problema está en el IF ya que rfc siempre sera igual al rfc, espero me puedan ayudar.
Saludos

declare @rfc nvarchar (13)

if @object_type = '2' and  @transaction_type in ('A','U')
   begin 
     select @rfc = LicTradNum
	 from OCRD
	 where cardCode = @list_of_cols_val_tab_del
       if (@rfc = @rfc )
   begin
     Set @error = - 002
	 Set @error_message = 'Error - El RFC ya se encuentra registrado'
  end 
end

Te comparto uno , espero te sirva…

IF @object_type = '2' and @transaction_type in ('A','U')
 BEGIN
 declare @RFC varchar(13)
 declare @tipoSN varchar(1)
 declare @existe varchar(13)
 declare @re varchar(10)
 SELECT @tipoSN = CardType FROM OCRD T2 WHERE @list_of_cols_val_tab_del= T2.CardCode
 select @re = CASE when @tipoSN = 'C' then 'Cliente' when @tipoSN = 'S' then 'Proveedor' else 'Lead' end
 SELECT @RFC = LicTradNum FROM OCRD T3 WHERE @list_of_cols_val_tab_del= T3.CardCode and T3.CardType=@tipoSN 
 Select @existe = T4.LicTradNum from OCRD T4 where T4.LicTradNum=@RFC AND T4.CardCode <> @list_of_cols_val_tab_del
 and (T4.LicTradNum <> 'XAXX010101000' and T4.LicTradNum <> 'XEXX010101000' ) and T4.CardType=@tipoSN
 
 --and (T4.UserSign not in (1,10)) and T4.CardType=@tipoSN
 if @existe is not null
 begin
 set @error = 1
 set @error_message = 'RFC ' + @RFC + ' ya existente como ' + @re + '. Verificar información'
 end
 END
3 Me gusta

Gracias @juliancab, hice el query un poco mas sencillo, me basé en el tuyo, quedo así.

declare @rfc nvarchar (13)
declare @existe varchar(13)

if @object_type = '2' and  @transaction_type in ('A')
   begin 
     select @rfc = a.LicTradNum
	    from OCRD a  
	    where cardCode = @list_of_cols_val_tab_del  
	 select @existe = b.licTradNum 
	    from ocrd b 
	    where b.licTradNum = @rfc and b.cardCode <> @list_of_cols_val_tab_del
	 and (b.LicTradNum <> (select u_rfcPermitido from dbo.[@RFC_PERMITIDOS]))
       if @existe is not null
   begin
     Set @error = - 002	
	 Set @error_message = 'Error - El valor ' +@RFC+ ' ya se encuentra registrado al menos en un Socio de Negocios'
  end 
end

solo me falta solucionar el tema del sub query para no poner código fijo, al tener solo un rfc en u_rfcPermitido me funciona bien, pero si agrego otro mas me falla la consulta.

(select u_rfcPermitido from dbo.[@RFC_PERMITIDOS])

Gracias nuevamente.

Saludos.

2 Me gusta

prueba asi…

(b.LicTradNum not in (select u_rfcPermitido from dbo.[@RFC_PERMITIDOS]))

2 Me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.