on 05-19-2011 4:33 PM
Buenos días,
Tengo un problema, necesito crear un transaction N, para lo siguiente:
Resulta que en pagos recibidos -- medios de pago -- cheque, quisiera validar que cuando el numero de cheque sea repetido entonces me arroje un error de que debe cambiar el numero de cheque, claro está que hay distintos bancos y los números de chuque podrían ser iguales, por lo que habría que validar que si el numero de cheque es igual siempre y cuando sea del mismo banco entonces se genere el error.
Además ahí mismo en medios de pago, pero ahora en transferencias bancaria, quisiera validar en el campo de referencia (TrsfrRef), que cuando sea un mismo número de referencia entonces se genere un error.
Agradecería mucho la ayuda para poder hacer esto.
Muchas gracias por su atención.
saludos.
USa la funcion HAVING COUNT para encontrar datos repetidos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Por ejemplo si quisieras encontrar docentry repetidos de facturas podrias hacer algo como
if @transaction_type in ('A') and @object_type in (13)
begin
declare @duplicados as int
set @duplicados =(select count (docentry) from oinv group by docentry having count(1) > 1
if @duplicados >=1
begin
set @error =1
set @error_message ='Existen documentos duplicados'
end
end
algo asi
No es que acabo de aclarar algo y a la final solo se hara la validación para el campo de referencia.
Por ahora tengo algo asi:
if @transaction_type in ('A') and @object_type in (13)
begin
declare @duplicados as int
set @duplicados =(select count (TrsfrRef) from ORCT group by TrsfrRef having count(1) > 1
if exists @duplicados >=1
begin
set @error =1
set @error_message ='Referencia ya Existe'
end
end
Pero me genera el siguiente error:
Msg 156, Level 15, State 1, Procedure SBO_SP_TransactionNotification, Line 30
Incorrect syntax near the keyword 'if'.
Ademas que el Object Type no es el 13.
Pruabalo asi
if @transaction_type in ('A') and @object_type = 24
begin
declare @Cheque as int
set @Cheque = (select CheckNum from RCT1 where DocEntry = @list_of_cols_val_tab_del)
IF Exists (SELECT COUNT(CheckNum) FROM RCT1 WHERE CheckNum = @Cheque GROUP BY CheckNum HAVING COUNT(CheckNum) > '1')
begin
set @error =1
set @error_message ='Existen documentos duplicados'
end
end
Slds
Edited by: Floyola on May 19, 2011 12:42 PM
Coloco el código de esta forma:
IF @object_type = '24' and @transaction_type IN ('A','U')
begin
declare @duplicados as int
set @duplicados =(select count (TrsfrRef) from ORCT group by TrsfrRef having count(TrsfrRef) >= 1)
if @duplicados >= 1
begin
set @error =1
set @error_message ='Referencia ya Existe'
end
end
Se ejecuta con exito, pero en el sistema no sucede nada.
Intenta con
IF @object_type = '24' and @transaction_type IN ('A','U')
begin
declare @referencia nvarchar (10)
declare @duplicados as int
set @referencia=(select TrsfrRef from ORCT where docentry=@list_of_cols_val_tab)
set @duplicado = (select count (TrsfrRef) from ORCT where TrsfrRef =@referencia)
if @duplicado >0
begin
set @error =1
set @error_message ='Referencia ya Existe'
end
end
mmm...que tal asi
if @transaction_type in ('A','U') and @object_type = 24
begin
declare @Ref as Nvarchar(50)
set @Ref = (select TrsfrRef from ORCT where DocEntry = @list_of_cols_val_tab_del)
IF Exists (SELECT COUNT(TrsfrRef) FROM ORCT WHERE TrsfrRef = @Ref HAVING COUNT(TrsfrRef) > '1')
begin
set @error =1
set @error_message ='Existen documentos duplicados'
end
end
Espero sirva, sino habra que pensar mas jajaja
Slds
Buenos días,
Floyola el código para la referencia en medios de pago sirve perfectamente pero ahora estoy intentando usar el mismo código para hacer los mismo pero ahora en el campo de referencia bancaria en el deposito.
if @transaction_type in ('A','U') and @object_type = 25
begin
declare @Refe as Nvarchar(50)
set @Refe = (select Ref2 from ODPS where DocEntry = @list_of_cols_val_tab_del)
IF Exists (SELECT COUNT(Ref2) FROM ODPS WHERE Ref2 = @Refe HAVING COUNT(Ref2) > '1')
begin
set @error =100-1
set @error_message ='Existe Número de Referencia Bancaria duplicado'
end
end
Ese es el código que utilizo, el mismo que me pasaste pero cambiandole algunas cosas, pero me genera el siguiente error:
Msg 207, Level 16, State 1, Procedure SBO_SP_TransactionNotification, Line 48
Invalid column name 'DocEntry'.
Hola Miguel, tu problema se debe a que los depositos no se rigen por el campo llave DocEntry , en su caso el campo es el DeposId . No todos los documentos tienen el campo DocEntry, debes revisar la tabla antes de hacer el TN.
if @transaction_type in ('A','U') and @object_type = 25
begin
declare @Refe as Nvarchar(50)
set @Refe = (select Ref2 from ODPS where DeposId = @list_of_cols_val_tab_del)
IF Exists (SELECT COUNT(Ref2) FROM ODPS WHERE Ref2 = @Refe HAVING COUNT(Ref2) > '1')
begin
set @error =100-1
set @error_message ='Existe Número de Referencia Bancaria duplicado'
end
end
Atte.
Felipe Loyola
Felipe estoy intentando hacer lo mismo pero ahora para los números de cheque en los medios de pago.
if @transaction_type in ('A','U') and @object_type = 24
begin
declare @Check as Nvarchar(50)
set @Check = (select CheckNum from RCT1 where LineID = @list_of_cols_val_tab_del)
IF Exists (SELECT COUNT(CheckNum) FROM RCT1 WHERE CheckNum = @Check HAVING COUNT(CheckNum) > '1')
begin
set @error =100-2
set @error_message ='Existe Número de Cheque duplicado'
end
end
Es el código que estoy usando pero no me esta validando nada, que puede ser?
saludos.
Por favor me podrian ayudar con lo siguiente:
Resulta que ya tengo las validaciones requeridas, pero esta pasando algo que no habia probado, en la validación del número de cheque me lo hace cuando son registros en distintos documentos, pero quisiera validar tambien lo siguiente, cuando se hace el registro de cheque en medios de pago, podría darse el caso de que registren varios cheques a la vez, y haciendo esta prueba de registrar varios cheques en distintas lineas, no me esta haciendo la validación, de hecho me esta dando error.
User | Count |
---|---|
86 | |
7 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 | |
2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.