cancel
Showing results for 
Search instead for 
Did you mean: 

Error de conversión en tabla de usuario

marco_ramirez
Active Contributor
0 Kudos

Estimados

Tengo el siguiente caso: he creado una tabla de usuario y me sirven los dos campos originales con los que se crea, Code y Name, sin embargo, al ingresarle información me da el siguiente error

Conversion Failed when converting the nvarchar value '-3 @tabla_de_usuario' to data type int (CINF)

De acuerdo a información que visto por el foro dedusco que se debe a que se está duplicando un valor, que es primario, que se contiene en alguna otra tabla (esto comprendo pero no lo aseguro)

Ahora bien si alguno de ustedes sabe como proceder para que no me pase esto se los agradezco, en las notas de SAP aun sigo sin encontrar nada aunque es bastante extensa la busqueda en ellas.

agradezco el apoyo

Saludos Cordiales

Marco Ramírez

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

Para solucionar este inconveniente:

Cada vez que uses la variable @object_type del Transaction Notification comparala con valores tipo cadena no numericos.

en tu caso @object_type= '2' no solamente el numero.

marco_ramirez
Active Contributor
0 Kudos

Excelente! Eder

Recien acabo de hacer lo indicado y ya se grabaron los datos sin ningún problema.

Mauricio, gracias por tu tiempo dedicado a este caso.

Saludos

Marco Ramírez

former_member188440
Active Contributor
0 Kudos

Te dije que era el transaction!! jejeje

que bueno que se soluciono

Saludos!

Answers (1)

Answers (1)

Former Member
0 Kudos

Tienes sólo los campos estandar en la tabla o le pusiste campos de usuario?

El registro estas llenandolo via SAP?

Por lo que dice el error, no es una duplicidad de un campo llave, pues te este te daria un error como "infraccion a la llave primaria en la tabla xxxxx"

slds.

marco_ramirez
Active Contributor
0 Kudos

Gracias Rulius

Te amplío: la tabla de usuario cuenta con los campos estándard con los que se crea la tabla (Code y Name)

esta tabla la tengo puesta en un campo de usuario en el que me sirve como una lista de valores que se deben ir llenando.

A partir de lo anterior ingreso los datos y me genera el error

y si lo estoy llenando los registros vía SAP

former_member188440
Active Contributor
0 Kudos

Hola te comento que los datos que debe llevar el campo code y name no pueden ser duplicados, siempre debe ser un consecutivo, el error que te esta dando es de tipo de datos, verifica el dato que estas mandando a la tabla con respecto al tipo de dato que almacena dicho campo de usuario

correte un sp_help @tutabla para ver el tipo de datos que debes mandar

marco_ramirez
Active Contributor
0 Kudos

Gracias Mauricio

Los tipos de datos son los siguientes

Code (PK, nvarchar (8), not null)

Name (nvarchar (30), not null)

en ambos casos estoy ingresando valores alfanuméricos, incluso en el caso de Code hasta los 8 caracteres pero el error persiste.

former_member188440
Active Contributor
0 Kudos

No creo que sea por un consecutivo, el error seria distinto, sin embargo te pregunto, los datos que ingresas a code y name, son consecutivos?

marco_ramirez
Active Contributor
0 Kudos

En el caso de Code estoy ingresando V1000 y en Name Vendedor

si cambio a Code 1000 y Name Vendedor

Igual continua el error

Lo que me parece extraño es el porque me dice el erro que los quiere convertir a un valor "int" siendo los datos de naturaleza nvarchar.

former_member188440
Active Contributor
0 Kudos

revisa la longitud de los campos a ver si te soportan esa longitud

marco_ramirez
Active Contributor
0 Kudos

Revisado

8 caractéres para Code

30 caractéres para Name

otro dato, he desvinculado esta tabla de un campo de usuario al que lo tenía enlazado para trabajar con la tabla unicamente

hice pruebas y nada.

former_member188440
Active Contributor
0 Kudos

Si tratas de ingresar manualmente el valor te marca error???

marco_ramirez
Active Contributor
0 Kudos

Asi es Mauricio, manualmente ingreso los datos y da error.

He vistos otras dos tablas de usuario creadas anteriormente que ya tienen datos, intento ingresar un dato manualmente y zaz

que tienen el mismo problema

former_member188440
Active Contributor
0 Kudos

Ok se me ocurre lo siguente

1. Si creas otra tabla de usuario con las mismas caracteristicas te marca el error? (intenta en ambiente de pruebas)

2. Quizas algun codigo en el TransactionNotification que este metiendo ruido

3. Que otros campos y que info metes en la tabla de usuario?

marco_ramirez
Active Contributor
0 Kudos

He hecho las pruebas indicadas, dejando la tabla de usuario con los dos campos originales con que se crea y el error continua.

Como te decía en el mensaje anterior, hice pruebas de ingreso de datos en otras dos tablas de usuario que antes se habían creado y me da el mismo error, ahora bien, las tablas que te menciono ya tienen otros datos ingresados que en su momento no hubo complicaciones para ingresar.

En cuanto al código en el TN como determinar si uno de ellos afecta estas tablas?

gracias

former_member188440
Active Contributor
0 Kudos

que ocurre si ingresas por ejemplo solo numeros

marco_ramirez
Active Contributor
0 Kudos

Ocurre lo mismo Mauricio

He intentado cambiando a solo numeros, solo letras y alfanumérico en ambas celdas y el error sigue alli

Otra cosa que acabo de hacer es comentariar Todo el códig en el TN para saber si alguno me pudiera estar interfiriendo

pero no paso nada, siguió dando el error.

marco_ramirez
Active Contributor
0 Kudos

Mauricio

Tengo una luz al final del tunel!

Por erro había comentariado el código completo de otra base de datos de pruebas.

Comentarie el código en TN de la BD correcta y el error desarparecio y los datos han sido gragados sin problema alguno

ahora bien, como determinar que parte del código en TN es el que me provoca el error?

Saludos

Marco Ramírez

marco_ramirez
Active Contributor
0 Kudos

Me he ido revisando código a código y el culpable de todo es este que te adjunto

If @object_type = 2   -- Maestro de socios de negocios
Begin

declare @cont int
declare @nit varchar(15)
declare @tipo char(1)
Select @nit = U_NIT,
       @tipo = CardType
	from OCRD
		WHERE CARDCODE = @list_of_cols_val_tab_del

select @cont = count(1) 
	from  OCRD 
		where U_NIT = @nit
			and CardType = @tipo


-- VALIDACION CAMPO OBLIGATORIO NIT

Declare @Nit2 as nvarchar(20)
             ,  @CardType as nchar(1)
             ,  @CountryDefault as nchar(3)
             ,  @Country as nchar(3)

   Select @CountryDefault = 'GT'

   Select @Nit2 = T0.U_Nit
            , @Country = Country
   From OCRD T0
   Where CardCode = @list_of_cols_val_tab_del

   If (@Nit2 Is Null or Len(Rtrim(@Nit2))=0) And @Country = @CountryDefault
   Begin
      set @error = 1 
      set @error_message = 'Falta NIT de Socio de Negocio.' 
   end
   else
	Begin
		if @cont > 1 -- and @nit <> 'CF' BEGIN
		  Begin
			set @error = 1
			set @error_message = 'Ese NIT ya existe....'
	      End
	End
end

Cuál es tu apreciación del código?