Solved

Can I access the values from the dataset that has been passed to For each loop container outside for each loop container in SSIS 2012

Posted on 2016-11-01
11
29 Views
Last Modified: 2016-11-07
HI!

I have a select statement that gets a list of columns from a table and this dataset is passed to a for each loop container and the each column is assigned to a variable created at the package level.

The question is, can the value of these variables be accessed outside the for each loop container. If so, what values do they hold? Is it the most recent value?

If my for each loop container fails, I should update a column in a table based on the value of a column that has been passed and is being accessed in a for each container.

Any code/logic/examples are greatly appreciated!

Thanks a million in advance.
0
Comment
Question by:amukta
  • 5
  • 3
  • 3
11 Comments
 
LVL 17

Expert Comment

by:Pawan Kumar Khowal
Comment Utility
Have you tried Script task. Seems like you have a complex business req. for these kind of things Script task is the best option.
0
 

Author Comment

by:amukta
Comment Utility
Not sure! how the script task would solve the problem. I'm trying to access the variables that have been assigned from an object dataset passed to a for each loop. I'm trying to access them outside the for each loop container. I'm not able to access them outside the for each loop, is there any property I'd need to set?
0
 
LVL 13

Expert Comment

by:Megan Brooks
Comment Utility
You should be able to access the variables anywhere within the scope in which they are defined. They should contain the last values assigned to them, although you will need to test and see exactly what that is after exiting the loop.

If the variables are defined at the scope of the For Each container then they will not exist outside that container. Package level variables, on the other hand, will be available anywhere in the package.

You can use the Variables window to see the scope of variables, and to move them from one scope to another.
0
 
LVL 17

Expert Comment

by:Pawan Kumar Khowal
Comment Utility
Good Suggestion from Megan. Try if this works for you.
0
 

Author Comment

by:amukta
Comment Utility
Hi! Megan,

Thank you very much! But here's what happening!

I have a SQL statement in the execute SQL task, that pulls a list of files that start with say 'ABC' and today's date. At any given time, the SQL statement pulls atleast 4 files. This dataset is passed to a FOR EACH LOOP ADO enumerator and then if the package fails in any part of the for each loop container it is supposed to insert rows into a table saying failure on the file that's being currently looped through, if a row does not already exist in the table, for that file and if exists update. When I try inserting rows for failure on a file, it is inserting the name of the next file or randomly any of the 4 files, other the name of the current file. If I just  try updating instead of inserting, if the row does not exist, it does nothing or updates a row that was existing with the maximum date.

Is there any property I should be setting or is there anything that I'm missing.

Greatly appreciate your help! It's very urgent!

Best Regards,
Amukta
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 
LVL 13

Expert Comment

by:Megan Brooks
Comment Utility
There should be some point within the For Each loop, such as at the beginning of an iteration, where you have the name of the file that should appear in the error output, should the current iteration fail. Can you copy that value to another variable that is outside the scope of the For Each container and available to the error handling component, and that is not otherwise updated each iteration?
0
 
LVL 17

Assisted Solution

by:Pawan Kumar Khowal
Pawan Kumar Khowal earned 250 total points
Comment Utility
Hi Amukta,

Why dont you try Script task. There you can write your own custom code.
0
 

Author Comment

by:amukta
Comment Utility
HI! Megan,

I've tried that, but looks like it doesn't seem to work.

Thanks for your help!
0
 

Author Comment

by:amukta
Comment Utility
Thanks Pawan for your input as well! But I'm not sure, how it can be handled in a script task outside the for each loop container and it resolves this issue.
0
 
LVL 13

Accepted Solution

by:
Megan Brooks earned 250 total points
Comment Utility
You can use a script task within the For Each container to capture the current values of loop variables and copy them to other variables defined at a higher scope level. That way, the values present during the most recent iteration of the loop will be preserved even when the loop exits. Is that what you are looking for?
0
 

Author Closing Comment

by:amukta
Comment Utility
Thank you very much! That's exactly what I was looking for.It works great!
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

My client sends data in an Excel file to me to load them into Staging database. The file contains many sheets that they have same structure. In this article, I would like to share the simple way to load data of multiple sheets by using SSIS.
Slowly Changing Dimension Transformation component in data task flow is very useful for us to manage and control how data changes in SSIS.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now