El contenedor de bucles Foreach define un flujo de control que se repite en un paquete. Este es un componente definido en el SSIS (SQL Server Integration Services). La ejecución del bucle en el contendor For Each es similar al bucle Foreach de varios lenguajes de programación conocidos.
Existen diferentes tipos de enumeradores disponibles que son:
* Enumerador de archivos para Foreach
El enumerador de archivos enumera los archivos en una carpeta. Por ejemplo, podemos obtener todos los archivos que tienen la extensión *. Txt en una carpeta de Windows y sus subcarpetas.
* Enumerador ADO para Foreach
Permite enumerar las filas de una tabla. Por ejemplo, podemos obtener las filas de los registros ADO.
* Enumerador de conjunto de filas del esquema Foreach de ADO.Net
El enumerador ADO.Net enumera la información del esquema. Por ejemplo, podemos obtener la una lista de tablas de la base de datos.
* Enumerador de elementos para Foreach
Utilizado para enumerar elementos que son colecciones. Por ejemplo, podemos enumerar los nombres de los ejecutables y directorios de trabajo que utiliza una tarea Ejecutar proceso.
* Enumerador de lista de nodos para Foreach
La lista de nodos que permite Enumera el resultado de una expresión XPath.
* Enumerador de variable para Foreach
El enumerador de variable enumera los objetos que contienen variables especificadas. Aquí los objetos enumerador no son más que una matriz o tabla de datos, como por ejemplo un DataSet de ADO.Net
* Enumerador de SMO para Foreach
El enumerador de SMO enumera los objetos de administración de SQL Server (SMO). Por ejemplo, se puede obtener la lista de funciones o vistas de una base de datos SQL Server.
Para este ejemplo utilizaremos el
enumerador de archivos Foreach, vamos a copiar los archivos que se encuentran en una carpeta Origen (C:\Origen) a una carpeta Destino (D:\Destino).
Primero abrimos el
Visual Studio y creamos un proyecto Business Intelligence - Integración de
servicios como lo muestra la siguiente imagen.
Después de crear el proyecto de integración de servicios cambiamos el nombre por defecto de la Dtsx
package1, para este ejemplo podemos poner
ExampleForeach.
Seguidamente empezamos
agregando una variable a nuestro paquete ExampleForeach, damos clic derecho sobre el modo de diseño y en el menú damos clic sobre
Variables.
Luego nos aparece una ventana que nos permite Agregar la variable.
Aquí añadimos como nombre de variable
File, tipo de datos
String y value o valor
default.
Ya configurada nuestra variable, procedemos arrastrar el contenedor de
bucles ForEach que se encuentra en la caja de herramientas al formulario.
Quedando el contenedor bucle Foreach en modo diseño de la siguiente forma:
Para configurar nuestro control seguiremos los siguientes pasos:
1. Dar doble clic en el cuadro contenedor de bucle o clic derecho Edit.
2. Luego se muestra una ventana para editar el bucle Foreach.
3. En esta ventana en el menu Collection seleccionamos en tipo enumerador, Enumerador de archivos.
4. Establecemos la carpeta Origen en la sección configuración de Enumeración. Para este ejemplo he dejado la ruta D:\Docs
5. Si lo deseamos, marcamos la casilla de verificación Traverse Subcarpetas.
Si seguimos los pasos anteriores tendremos una configuración como lo muestra la siguiente imagen:
En la misma ventana, seleccionamos del menú izquierdo la opción
Variable Mappings aquí seleccionamos la variable que habiamos creado.
Finalmente damos clic en Aceptar.
En este punto ya tenemos configurado nuestro contenedor de bucles ForEach. Ahora agregamos un control File System Task a nuestro contenedor de bucles Foreach, debe quedar como se muestra en la imagen.
Para configurar seguimos los siguientes pasos:
1. Dar doble clic en el cuadro File System Task o clic derecho Edit.
2. En la ventana establecer IsDestinationPathVariable en False.
3. Configuramos la conexión destino, en la propiedad DestinationConnection.
4. Seleccionamos la opción de nueva conexión.
5. En la ventana que aparece seleccionamos "Carpeta existente" o Existing folder.
6. Seguidamente, seleccionamos la carpeta de destino mediante "Examinar". Para este ejemplo seleccionamos D:\Destino
Dar clic en Ok para continuar la configuración.
7. Luego Seleccionamos la Operación, para este caso es Copiar archivos o Copy file.
8. Cambiamos a True la propiedad IsSourcePathVariable y seleccionamos la opción SourceVariable User::File
Quedando la parametrización para nuestro control de la siguente forma:
En la ventana damos clic en Ok. Ejecutamos nuestro proyecto (F5) y si todo nos sale bien debemos ver una imagen como la siguiente, además de verificar si los archivos fueron copiados de acuerdo a las rutas configuradas como Origen y Destino.
"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""