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.

SSIS: enviar correo electrónico diferente a los empleados según su situación laboral.

Soy bastante nuevo en SSIS.

Tengo una consulta SQL bastante compleja (que no quiero replicar y mantener 3 veces), cuyo resultado es una tabla con 2 columnas:
emailAddress, formLetterNumber

Lo que quiero hacer es:

por cada fila devuelta:
    si formLetterNumber es igual a 1
        enviar la carta #1 al correo electrónico correspondiente
    si formLetterNumber es igual a 2
        enviar la carta #2 al correo electrónico correspondiente
    si formLetterNumber es igual a 3
        enviar la carta #3 al correo electrónico correspondiente

Por diversas razones comerciales, no espero tener más de 3 formularios de cartas.

Lo que he hecho:
– En el flujo de control, he colocado un componente Execute SQL. (hasta aquí todo bien)
– Lo he conectado a un componente Foreach
– En el componente Foreach, he colocado una tarea Send Mail
Enlace de la imagen
Esto funciona si solo hay un tipo de formulario de carta. Este paquete de una sola carta se ejecuta sin ningún problema.

Pero ahora quiero hacer una División Condicional para dividir el flujo en 3 tareas Send Mail diferentes, dependiendo del formLetterNumber devuelto por el SQL. Sin embargo, la División Condicional está en la caja de herramientas de Flujo de Datos, y la tarea Send Mail solo está en la caja de herramientas de Flujo de Control, y no puedo averiguar cómo mover los datos de un componente a otro. Ver imagen para ver lo que estoy tratando de hacer: Enlace de la imagen 1, Enlace de la imagen 2

He buscado en este sitio y en YouTube, y o bien la solución no está ahí, o estoy haciendo mal la pregunta. C# y scripting son una opción, pero comprar otro software no lo es. Gracias de antemano por sus sugerencias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para dividir el flujo en tres tareas diferentes de envío de correo basadas en el formLetterNumber devuelto por la consulta SQL, puedes seguir los siguientes pasos:

    1. En el Flujo de Control, agrega un componente de Tarea de Ejecución SQL para ejecutar la consulta SQL compleja que devuelve una tabla con las columnas dirección de correo electrónico y formLetterNumber.
    2. Conecta el componente de Tarea de Ejecución SQL a un componente de Tarea de Flujo de Datos.

    3. En el componente de Tarea de Flujo de Datos, agrega un componente de Origen para leer los datos de la tabla devuelta por la consulta SQL.

    4. Agrega un componente de División Condicional para dividir los datos en tres rutas basadas en la columna formLetterNumber.

    5. Para cada ruta, agrega un componente de Destino para enviar el correo electrónico correspondiente a la carta de formulario.

    6. Configura el componente de Tarea de Envío de Correo en cada componente de Destino para enviar la carta de formulario adecuada a la dirección de correo electrónico especificada en la columna emailAddress.

    7. Conecta las rutas a sus respectivos componentes de Tarea de Envío de Correo.

    El componente resultante de Tarea de Flujo de Datos debería verse como la imagen a continuación:

    Componente de Tarea de Flujo de Datos

    Al utilizar un componente de División Condicional en el componente de Tarea de Flujo de Datos, puedes dividir los datos en varias rutas. Luego, para cada ruta, puedes configurar un componente de Tarea de Envío de Correo para enviar la carta de formulario correspondiente basada en la columna formLetterNumber.

Comments are closed.