none
Bucle foreach RRS feed

  • Pregunta

  • Estimados,

    No si alguien podria ayudarme con un ejemplito en el cual yo pueda barrer un tabla de un solo campo en un foreach y cada dato obtenido asignarlo a un store procedure en un data task. Realmente estoy que doy vuelta y vuelta por todos lados y aun no logro encontrar esta solucion, si alguien puede ayudarme estare muy agradecido por su ayuda.

    Saludos,

     

    Jorge

    jueves, 6 de mayo de 2010 16:49

Respuestas

  • Estimado,

    Gracias por tu ayuda, ya pude lograr hacer funcionar a mi bucle e insertar barriendo una vista. El error que tuve que corregir era el paso de la variable del foreach a la tare ejecutar sql, ahi estaba el detalle.

    Saludos,

     

    Jorge

    • Marcado como respuesta J.Encalada viernes, 7 de mayo de 2010 16:22
    viernes, 7 de mayo de 2010 16:22

Todas las respuestas

  • Hola.

    Aquí tienes un ejemplo parecido: http://www.codeproject.com/KB/database/foreachadossis.aspx

    En el fondo, tienes que cargar un ADO Enumerator y colocar la variable del bucle como sentencia SQL que ejecute el OLE DB Source de la DataFlow Task.

    Si no lo logras, nos dices.

     


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    jueves, 6 de mayo de 2010 17:01
    Moderador
  • Estimado amigo Alberto López,

    El ejemplo es casi lo que necesito pero mi unico inconveniente es que dentro del bucle necesito asignarle los valores del bucle a una tarea ejecutar sql y no a un de flujo de datos, doctor si me podrias apoyar con eso te lo agradeceria.

    Saludos cordiales,

    Jorge

    P.D: Si me puedes brindar tu msn, si no fuera mucha molestia, gracias

    jueves, 6 de mayo de 2010 17:55
  • Hola.

    Lo único que debes sustituir es, en lugar de poner un dataflow, poner una tarea de ejecutar sql y en el comando a ejecutar, obtenerlo de variable. De todos modos, si no lo logras, nos dices.

    En cuanto a brindarte mi msn, no soy partidario de establecer conversaciones a nivel particular, ya que siendo este un foro en el que todos participamos, si vamos publicando aquí toda la conversación cualquier otro puede ayudarte y posteriormente beneficiarse de lo comentado.

     


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    jueves, 6 de mayo de 2010 18:48
    Moderador
  • Estimado Alberto 

    Te comento que aun tengo problemas, te detallo:

    -Primero he creado la primera la tarea ejecutar que barre la tabla que tiene ej. 30 registros


    -Esos valores atraves de la variable llamada tienda que le colocado al bucle foreach, tal como
    esta en la ayuda inicial que me brindaste, ya no he creado la segunda conexion, por que noto
    que solo la utilizas en caso le das a la tare flujo de datos.


    -Confirmame si hasta ahi voy bien por favor, dentro del bucle he colocado la segunda tarea ejecutar
    en la cual la conexion le asigno la misma que esta en el origen de datos, tambien le he colocado el parametro
    llamando a la variable tienda que es el que asumo necesita mi store procedure para que llene los datos a una
    tabla definida. Pero ahi es donde me sale el siguiente error y no se si podrias orientarme en que estoy fallando.

     

    Error:Se ha alcanzado el punto de interrupción de SSIS "Interrumpir al principio de cada iteración del bucle" en el ejecutable "Contenedor de bucles Foreach"
    Error: 0xC002F210 en Tarea Ejecutar SQL, Tarea Ejecutar SQL: Error al ejecutar la consulta "Sp_Proceso_Calculo_Stock_Tiendas_Nav": "Error al extraer el resultado a una variable de tipo (DBTYPE_STR)". Posibles motivos del error: problemas con la consulta, la propiedad "ResultSet" no fue establecida correctamente, parámetros no establecidos correctamente o conexión mal establecida.
    Error de la tarea: Tarea Ejecutar SQL

    jueves, 6 de mayo de 2010 21:41
  • Hola.

    Creo que no vas bien, seguramente porque los parámetros no los tienes correctamente configurados en la tarea de SQL que está dentro del bucle. Ten en cuenta que la variable ha de tomar el valor de la sentencia que se ejecutará, no del nombre del procedimiento almacenado. ¿Lo tienes así contemplado? ¿De qué tipo es la variable "tienda"?


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 7 de mayo de 2010 10:08
    Moderador
  • Estimado,

    Te detallo lo que he realizado hasta el momento:

    1.- Cree un tarea ejecutar sql que pasara los datos al foreach. Mi sqlstatement se llama

    select * from View_TiendasNavision_Transferencias - (Esta contiene la información de la totalidad tiendas). Por otro lado he asignado lo que dice en tu ayuda para este punto como es que sea full set, ahi en conjunto resultado cree la variable Tienda.

    2.- El el foreach en colección he seleccionado el enumerador de ado para foreach. Asi como tambien la variable Tienda.

    3.- La tarea ejecutar que esta dentro del foreach, le he asignado la misma conexion que utilize en la primera tarea ya que la tabla esta en la misma base de datos y uso la conexion del origen de datos declarada en el proyecto. mi sqlstatement es el nombre de mi store que tiene un solo parametro que seria donde necesito pasar la tienda para que inserte en una tabla, el store se llama (Sp_Proceso_Calculo_Stock_Tiendas_Nav). En la asignación de parametros he seleccionado la variable tienda con dirección input y de tipo varchar el cual esta creado mi store y del tamaño que se creo.

    Doc, esto es lo que te puedo comentar a detalle que he realizado y no se si estoy errado en alguno de estos pasos que me podrias corregir u orientar para darle solución a esto.

    Gracias,

    Jorge

     

     

    viernes, 7 de mayo de 2010 14:08
  • Estimado,

    Gracias por tu ayuda, ya pude lograr hacer funcionar a mi bucle e insertar barriendo una vista. El error que tuve que corregir era el paso de la variable del foreach a la tare ejecutar sql, ahi estaba el detalle.

    Saludos,

     

    Jorge

    • Marcado como respuesta J.Encalada viernes, 7 de mayo de 2010 16:22
    viernes, 7 de mayo de 2010 16:22