es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Componente de Secuencia de Tareas de Integración de Datos (SSIS) convierte variable de tipo objeto a variable de tipo entero.

Necesito cargar datos desde una fuente ODBC a un destino OLEDB. La tabla de destino OLEDB no contiene una columna Identity, pero sí tiene una columna de clave principal en la que se deben insertar los valores de manera similar a la columna Identity (incrementándolos en 1).

He consultado la tabla de destino (fuente OLEDB) y he recuperado el valor máximo (Id) y lo he asignado a una variable de SSIS de tipo Object. Utilizo el componente de Script desde el flujo de datos para obtener el valor max (Id) + 1 fila por fila.

Al intentar convertir la variable de tipo Object a tipo Integer, me aparece un error como:

No se puede convertir el objeto COM de tipo ‘System._ComObject’ al tipo de interfaz ‘System.IConvertible’. Esta operación falló porque la llamada QueryInterface al componente COM para la interfaz con IID ‘{805E3B62-B5E9-393D-8941-377D8BF4556B}’ falló debido al siguiente error: No se admite esta interfaz (Exception from HRESULT: 0x80004002 (ENOINTERFACE)).

La columna de la tabla de destino no se puede alterar.

MaxUID = Variable de objeto
RowNumber = Variable de salida

Código del componente de Script:

int i = 1;

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    Row.RowNumber = Convert.ToInt32(this.Variables.MaxUID) + 1;
    i = i + 1;
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para Convertir una Variable de Objeto a Tipo Entero en SSIS

    Para resolver el error de conversión de una variable de tipo objeto a tipo entero en SSIS, puede intentar la siguiente solución:

    • En primer lugar, asegúrese de que el componente de secuencia de comandos está configurado correctamente y conectado con la fuente de datos y el destino.
    • Compruebe si hay valores nulos en la variable de tipo objeto antes de convertirlo a tipo entero.
    • Para convertir la variable de objeto a variable entera, puede intentar usar cualquiera de los siguientes métodos:
    Row.RowNumber = int.Parse(this.Variables.MaxUID.ToString()) + i;
    
    Row.RowNumber = Convert.ToInt32(this.Variables.MaxUID.ToString()) + i;
    

    Es posible que deba modificar el código según sus requisitos con respecto a cómo se usará la variable de salida (RowNumber).

    Siguiendo la solución mencionada anteriormente, debería poder convertir una variable de objeto a tipo entero en SSIS sin errores.

Comments are closed.