Help -- How do I exit a Foreach Loop
I have a foreach loop that is processing files in a directory. One of the tasks is the execute sql task that calls a stored proc. If this stored proc returns a certain value then I need to exit the loop and not process any more files. But I have been unable to figure out how to make this happen.
Any help would be greatly appreciated.
Thanks!
GN
GN wrote:
I have a foreach loop that is processing files in a directory. One of the tasks is the execute sql task that calls a stored proc. If this stored proc returns a certain value then I need to exit the loop and not process any more files. But I have been unable to figure out how to make this happen.
Any help would be greatly appreciated.
Thanks!
GN
have you considered using the script task instead?
Similar Messages
-
How do I exit a while loop which has a 'read from spreadshee​t' pop up in it?
I have a while loop which calls 'read from spreadsheet'. My problem is that after entering a filename the loop repeats too quickly for me to hit the end loop button. How do I exit the loop without adding a delay after the read thereby slowing the loop when I don't want to exit. If I select cancel I get 'error 43'. Is there a way to to use an error handler to prevent this from popping up and use it to end the loop?
It's the error handler inside Read From Spreadsheet that creates the message. Specifically, one of the VIs called is Read Lines From File. The last VI in there is General Error Handler. You can delete it and save it with a different name. You should also modify it to return the error cluster. You'll also want to modify Read From Spreadsheet to return the error cluster so that you can trap the error in your VI. When cancel is selected, error code 43 is generated. Stop the loop when you see 43.
-
Animation Help - how to make an endless animation loop
Hi All,
I'm new to Director so bare with me.
I want to animate a filmstrip graphic that moves left horizontally across the page and eventually repeats itself (reenters the stage from the right side) in an endless loop. Think of a piece of masking tape taped together in a circle, and then rotate the piece of tape in a circle as you look at it.
What I am currently doing that doesn't work:
I have created two filmstrip graphics that I have put on different sprites and animated them so that they look like a single piece sliding across the screen. The page loads with Sprite A lying across the screen and starts to animate towards the left. Sprite B follows the right hand side of Sprite A so that it appears as one single graphic. Each graphic is the exact width of the stage. The problem occurs when I get to the end of the 2nd sprite. I want the first sprite to follow the 2nd sprite creating an endless loop. If I code some lingo at the end of the Sprite B to jump back to the beginning of the Sprite A animation, it gives an awkward jump that replaces Sprite B with the Sprite A contents.
Hopefully my description makes sense. Suggestions or pointers to a tutorial that explains how to do this? My lingo experience so far is VERY limited, and only covers a few pages of very basic commands covering animations, video playback, audio controls, and a few other minor descriptions provided by my instructor.
I am working with Director 11.5 on a Mac at school (fully licensed version), and 11.5 trial version on a PC at home.
Thanks,
Brian H.Hi Brian,
Are you looking at doing something like:
1. http://kayingleside.com/metamorph.html
or
2. http://britton.disted.camosun.bc.ca/metamorphose.html
The first one is using Shockwave 3D and making the image a map on a cylinder. The second one is a 2D image that loops, which is what I kind of understood yours as being.
There is a Director tutorial that explains the idea at:
http://www.director-online.com/buildArticle.php?id=467
As you'll see at teh bottom of the above page, it was inspired by the work of Jim Collins, who created the first 2 URL I put in this message.
There is another demo that does example 2 exactly. I thought it was on Director Online but can't seem to find it. I have a demo Director file if you'd like to see it.
Dean
Director Lecturer / Consultant / Director Enthusiast
http://www.deansdirectortutorials.com/
http://www.multimediacreative.com.au -
How do i exit a while loop using event handler
Hello,
I have an event handler structure within which i run a while loop for a particular event. I would like to interrupt the execution of this while loop as soon as another event occurs, even if the while loop has not finished execution. I have tried so many ways, the best i could get is exiting one itteration after the new event occurs which is no good for me.
Any suggestions???
Thanks
MeInstead of having a task while loop in an event case, put your task while loop in parallel with the loop surrounding the event structure. When the event which should start the task occurs, you can signal the start of the task while loop. You could use local variables of references to start/stop the loop when an event occurs. You could also use notifiers instead of variables to pass signals to start/stop the while loop. In general you should have a while loop for the event structure, and a parallel while loop to do the tasks. The parallel loop is controlled by variables or notifiers which are set in the event cases.
- tbob
Inventor of the WORM Global -
How do I exit a For Loop? Just Kidding! VISA and LVRT and App
Builder/Installer. Hi,
I am using LV6i and App Builder. I built a little program using the
VISA Config, Read Write, and Bytes at Serial port vi's.
I attached the build file also for ref.
[Image]
When built using the option to include the run time engine then
installed on a laptop, I get an illegal operation in lvrt.dll.
I have tried to install VISA on the laptop but this makes no difference.
I am new to VISA so any help is appreciated.
Thanks in advance for any help.
[See first answer for additional information][Attachment(s) for question]
Attachments:
Simple_Terminal.bld 2 KB -
So we have an Invoice .xlsx File from a 3rd party vendor. It contains two worksheets..."Enrolled" and "Engaged". The data and data columns in each worksheet is different. Is it possible to loop through multiple .xlsx files using SSIS
and a Foreach Loop Container for each spreadsheet, and then another Foreach Loop Container to control each worksheet, and pump the Excel data into a SQL Server Table first for "Enrolled" and then for "Engaged"? How can I control the Foreach
Loop Container in SSIS to process ONLY the "Enrolled" worksheet first? And then the "Engaged" worksheet next?
I know I have multiples out here and I apologize for that...but right now it seems as though I take three steps forward and then two back.
Any help would be GREATLY appreciated!
Thanks in advance!If the structure of the Excel sheets does not change from file to file then you can by having one ForEach Loop processing always the "Enrolled" sheet and another always the "Engaged" this is doable because the Excel OLEDB connector allows
to pick individual sheets, it is problematic therefore when sheet names themselves change.
MSDN has an example: https://msdn.microsoft.com/en-ca/library/ms345182.aspx
Arthur
MyBlog
Twitter -
I know I've REALLY struggled with this before. I just don't understand why this has to be soooooo difficult.
I can very easily do a straight Data Pump of a .xlsX File into a SQL Server Table using a normal Excel Connection and a normal Excel Source...simply converting Unicode to DT_STR and then using an OLE DB Destination of the SQL Server Table.
If I want to make the SSIS Package a little more flexible by allowing multiple .xlsX spreadsheets to be pumped in by using a Foreach Loop Container, the whole SSIS Package seems to go to hell in a hand basket. I simply do the following...
Put the Data Flow Task within the Foreach Loop Container
Add the Variable Mapping Variable User::FilePath that I defined as a Variable and a string within the FOreach Loop Container
I change the Excel Connection and its Expression to be ExcelFilePath ==> @[User::FilePath]
I then try and change the Excel Source and its Data Access Mode to Table Name or view name variable and provide the Variable Name User::FilePath
And that's when I run into trouble...
Exception from HRESULT: 0xC02020E8
Error at Data Flow Task [Excel Source [56]]:SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occured. Error code: 0x80004005.
Error at Data Flow Task [Excel Source [56]]: Opening a rowset for "...(the EXACT Path and .xlsx File Name)...". Check that the object exists in the database. (And I know it's there!!!)
I don't understand by adding a Foreach Loop Container to try and make this as efficient as possible has caused such an error unless I'm overlooking something. I have even tried delaying my validations and that doesn't seem to help.
I have looked hard in Google and even YouTube to try and find a solution for this but for the life of me I cannot seem to find anything on pumping a .xlsX file into SQL Server using a Foreach Loop Container.
Can ANYONE please help me out here? I'm at the end of my rope trying to get this to work. I think the last time I was in this quandry, trying to pump a .xlsX File into a SQL Server Table using a Foreach Loop Container in SSIS, I actually wrote a C# Script
to write the contents of the .xlsX File into a .csv File and then Actually used the .csv File to pump the data into a SQL Server Table.
Thanks for your review and am hoping and praying for a reply and solution.Hi ITBobbyP,
If I understand correctly, you want to load data from multiple sheets in an .xlsx file into a SQL Server table.
If in this scenario, please refer to the following tips:
The Foreach Loop container should be configured as shown below:
Enumerator: Foreach ADO.NET Schema Rowset Enumerator
Connection String: The OLE DB Connection String for the excel file.
Schema: Tables.
In the Variable Mapping, map the variable to Sheet_Name, and change the Index from 0 to 2.
The connection string for Excel Connection Manager is the original one, we needn’t make any change.
Change Table Name or View name to the variable Sheet_Name.
If you want to load data from multiple sheets in multiple .xlsx files into a SQL Server table, please refer to following thread:
http://stackoverflow.com/questions/7411741/how-to-loop-through-excel-files-and-load-them-into-a-database-using-ssis-package
Thanks,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
Introduction
We need to loop through all the flat files that have the same structure in a folder and import all the data to a single SQL Server table. How can we obtain the total count of the rows inserted to the destination SQL Server table?
Solution
We can use Execute SQL Task or Script Task to aggregate the row count increment for each iteration of the Foreach Loop Container. The following steps are the preparations before we add the Execute SQL Task or Script Task:
Create a String type variable FilePath, two Int32 type variables InsertRowCnt and TotalRowCnt.
Drag a Foreach Loop Container to the Control Flow design surface, set the Enumerator to “Foreach File Enumerator”, specify the source folder and the files extension, and set the “Retrieve file name” option to “Fully qualified”.
On the “Variable Mappings” tab of the container, map the variable FilePath to the collection value.
Drag a Data Flow Task to the container, in the Data Flow Task, add a Flat File Source, a Row Count Transformation, and an OLE DB Destination, and join them. Create a Flat File Connection Manager to connect to one of the flat files, and then configure the
Flat File Source as well as the OLE DB Destination adapter. Set the variable for the Row Count Transformation to “User::InsertRowCnt”.
Open the Property Expressions Editor for the Flat File Connection Manager, and set the expression of “ConnectionString” property to
“@[User::FilePath]”.
(I) Execute SQL Task Method:
In the Control Flow, drag an Execute SQL Task under the Data Flow Task and join them.
Create one or using any one existing OLE DB Connection Manager for the Execute SQL Task, set the “ResultSet” option to “Single row”, and then set the “SQLStatement” property to:
DECLARE @InsertRowCnt INT,
@TotalRowCnt INT
SET @InsertRowCnt=?
SET @TotalRowCnt=?
SET @TotalRowCnt=@InsertRowCnt+@TotalRowCnt
SELECT TotalRowCnt=@TotalRowCnt
On to parameter 1.
On the “Result Set” tab of the Execute SQL Task, map result 0 to variable “User::TotalRowCnt”.
(II) Script Task Method:
In the Control Flow, drag a Script Task under the Data Flow Task and join them.
In the Script Task, select variable InsertRowCnt for “ReadOnlyVariables” option, and select variable TotalRowCnt for “ReadWriteVariables”.
Edit the Main method as follows (C#):
public void Main()
// TODO: Add your code here
int InsertRowCnt = Convert.ToInt32(Dts.Variables["User::InsertRowCnt"].Value.ToString()
int TotalRowCnt = Convert.ToInt32(Dts.Variables["User::TotalRowCnt"].Value.ToString());
TotalRowCnt = TotalRowCnt + InsertRowCnt;
Dts.Variables["User::InsertRowCnt"].Value = TotalRowCnt;
Dts.TaskResult = (int)ScriptResults.Success;
Or (VB)
Public Sub Main()
' Add your code here
Dim InsertRowCnt As Integer =
Convert.ToInt32(Dts.Variables("User::InsertRowCnt").Value.ToString())
Dim TotalRowCnt As Integer =
Convert.ToInt32(Dts.Variables("User::TotalRowCnt").Value.ToString())
TotalRowCnt = TotalRowCnt + InsertRowCnt
Dts.Variables("User::TotalRowCnt").Value = TotalRowCnt
Dts.TaskResult = ScriptResults.Success
End Sub
Applies to
Microsoft SQL Server 2005
Microsoft SQL Server 2008
Microsoft SQL Server 2008 R2
Microsoft SQL Server 2012
Microsoft SQL Server 2014
Please click to vote if the post helps you. This can be beneficial to other community members reading the thread.Hi ITBobbyP,
If I understand correctly, you want to load data from multiple sheets in an .xlsx file into a SQL Server table.
If in this scenario, please refer to the following tips:
The Foreach Loop container should be configured as shown below:
Enumerator: Foreach ADO.NET Schema Rowset Enumerator
Connection String: The OLE DB Connection String for the excel file.
Schema: Tables.
In the Variable Mapping, map the variable to Sheet_Name, and change the Index from 0 to 2.
The connection string for Excel Connection Manager is the original one, we needn’t make any change.
Change Table Name or View name to the variable Sheet_Name.
If you want to load data from multiple sheets in multiple .xlsx files into a SQL Server table, please refer to following thread:
http://stackoverflow.com/questions/7411741/how-to-loop-through-excel-files-and-load-them-into-a-database-using-ssis-package
Thanks,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
I am trying to create a foreach loop that takes all txt files in Program Files and print only the names of files over 10KB.
This is what I got:
foreach($file in (Get-ChildItem -Path "c:\Program Files" -recurse -Include *.txt |
Select-Object FullName ))
if($file.size -gt 10KB)
Write-Host $file
I've been testing around with this for a bit now and doing some Googling to no avail, it'll work if I don't try to sort it by size and ask it just to print the name of all text files in Program Files. Any nudge in the right direction would be appreciated.Let me be more explicit. Whatou posted is not a loop.
Always start with HELP when you are learning. Ask your teacher to explain to you how to use HELP.
help foreach.
A ForEach loop cannot solve your issue here. You need to filter the results of a recursive search. In PowerShell this is almost never done with a loop. If your teacher tries to tell you otherwise you need to fire the teacher or take your money to a different
school.
Of course it may be more likly that you just didn't pay attention in class and are now asking us to do your homework for you.
Sorry. We don't do homework for children. This is a site for technicians who use scripting professionally. If you want to be a professional you need to do your homework No cheating. We are watching.
¯\_(ツ)_/¯ -
How to terminate or exit a for loop when the user clicks on stop button
Actually my problem is to stop a loop when i click on stop button.
example:i have two buttons 'start' and 'stop'
in start buttom i wrote a for loop as
dim i as integer
For i=1 To 100000
print i
Next
when i click on start buuton it prints 'i' value up tp 100000.
my question is when i click on 'Stop' button the for loop has to terminate or Exit from the loop and should stops the execution.
Is it possible to termianate or Exit the 'for loop'
PS.Shakeer Hussain
HyderabadI am unable to stop the loop and application not at all allowing to Press the Stop button.
It seems like Hung, any advise ?
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
btnStop.Enabled = True
btnSelectFile.Enabled = False
btnStart.Enabled = False
btnStop.Focus()
Dim strFileName As String = txtFileName.Text.ToString
Dim strLineText As String
If System.IO.File.Exists(strFileName) = True Then
Dim objReader As New System.IO.StreamReader(strFileName)
While objReader.Peek() <> -1 And stopclick = False
strLineText = objReader.ReadLine()
MsgBox(strLineText, MsgBoxStyle.Information)
Application.DoEvents()
Thread.Sleep(My.Settings("strDelay") * 1000)
'System.Diagnostics.Process.Start(My.Settings("strFireFoxLocation"), strLineText)
End While
End If
End Sub
Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click
stopclick = True
btnSelectFile.Enabled = True
btnStart.Enabled = True
btnStop.Enabled = False
End Sub
Raman Katwal
Please remember to mark the replies as answers if they help and unmark them if they provide no help -
How to bypass errors in the control flow in a foreach loop in SSIS?
Hi All,
Can anyone please get me through the solution for the below scenario:
- I have multiple XML files existing in the source system from where I need to read the data from each XML, validate and pull to staging database.
- So, to read the XML files from source, I have a foreach loop which will get the XML files from the source folder one by one and executes.
- There are multiple data flow tasks, script tasks, SQL tasks etc in the foreach loop to validate the business requirements.
Question: If there is an error in any of the component in foreach loop, it should log the error, come out of the loop from that point and pick up the next file with out stopping the execution. How can I achieve this?
Thanks,
SriHi Sri,
According to your description, when there is an error in any of the component in Foreach Loop Container, you want to continue processing rest of the loop after recording the error file details.
To achieve your requirement, the first thing you need to do is create an OnError event handler for the Data Flow (or any other child executable). Once the event handler is created show the system variables in the variables window, locate the Propagate variable
and set it to false.
For more details, please refer to the following two blogs:
http://www.codeproject.com/Articles/384690/In-SSIS-how-to-continue-a-for-each-loop-container
http://visakhm.blogspot.in/2013/03/error-handling-in-ssis-loops.html
Thanks,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
PLEASE HELP...how do i exit a programme
I am having some trouble with a programme i have been coding -
I am fairly new to Java and have a quick query!
How would i exit my programme in the middle of my code...
eg
if (a = 5)
System.out.println("you win");
else
...rest of code!EG I would like to end the programme when the user meets the requirements of the IF statement -
if (a = 5)If the user does not meet these requirements i would like them to go onto the next question.
so i need it to end:
else
question2... etcAt the moment - even if the requirements in the IF statement are met - the programme continues to run to the next question!
i understand i could use
System.exit(0)but i dont know if this is right?
Any help would be appreciated!
thanks!Hm... confusion still remains....
Look.... once your main() method returns, your app is more or less dead, (certain pieces of the jvm remain for a short period thereafter...)... SO
If your code steps through to the FINAL CLOSING BRACE in your main method, you have exited your app...
System.exit() is used in abnormal cases where you need to force the issue in a hurry, (un-recoverable exeptions, OOM errors,etc...).
Be aware that swing and awt objects could leave the app open unless you specify a default close op or disposal... -
How to exit from a loop on 2 different conditions
Hello Experts
I’m trying to write a procedure in which I’m taking PROVINCE as an input parameter. All the provinces are stores in a table. I’m using a cursor and rowtype variable to check the province. After I finds province I displays province and its code. Everything works fine expect when I don’t find the province. I’m not sure how to exit from loop if I don’t find the province. I already uses exit when condition. I was expecting else condition should work and should exit from the loop but it doesn’t. Can please somebody show me how to exit if I don’t find province in the table through cursor.
Here is my code
set serveroutput on
variable G_TAX varchar2(10)
CREATE OR REPLACE PROCEDURE p_create(i_state VARCHAR2)is
CURSOR cur_bb_tax is
select * from bb_tax;
bb_tax_details bb_tax%rowtype;
begin
if not cur_bb_tax%isopen then
open cur_bb_tax;
end if;
loop
fetch cur_bb_tax into bb_tax_details;
if (bb_tax_details.state = i_state) then
dbms_output.put_line(bb_tax_details.state || bb_tax_details.idstate);
end if;
exit when bb_tax_details.state = i_state;
end loop;
close cur_bb_tax;
exception
when others then
dbms_output.put_line(SQLERRM);
end;
Thanks in advanceHello,
Why don't you use dbms_output.Put_line and print output to find why logic is not able to execute? Maybe upper case/lower case/whitespace. *Also put your code between \ to preserve formatting*.
Regards -
I have a JSTL forEach loop similar to below:
<c:forEach var="product" items="${sessionScope.products}">
<tr><td>${product.description}</td></tr>
</c:forEach>I would like to use a static class to format the description. Something like below, but I know I cannot do it this way. How can I accomplish this?
<tr><td>${ProductFormatter.getHtmlDescription(product)}</td></tr>thanksThe least change approach. If you have already have a static function to do this, then a function tag would be appropriate.
The function tag basically lets you call a static function from EL.
custom.tld
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-
jsptaglibrary_2_1.xsd" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.1"
>
<tlib-version>1.0</tlib-version>
<short-name>my</short-name>
<uri>http://www.mytags.com/</uri>
<function>
<name>productFormatter</name>
<function-class>com.mypackage.ProductFormatter</function-class>
<function-signature>java.lang.String getHtmlDescription(com.mypackage.Product)</function-signature>
</function>
</taglib>If you include that tld in your WEB-INF directory, then the following in a JSP should work:
<%@ taglib uri="http://www.mytags.com/" prefix="my"%>
<c:forEach var="product" items="${sessionScope.products}">
<tr><td>${my:productFormatter(product)}</td></tr>
</c:forEach>Rather than putting the code in a static function, you might be better off encoding the logic into a custom tag. It depends on what your formatting function is like.
cheers,
evnafets -
How can you see the progress when using a ForEach loop?
Hi,
I have an array with about 100 containers in it. My main thread uses a ForEach loop with an inner case structure with six possibilities. My previous program had all the steps in a very long list, executing them one by one. I find this new approach is much nicer to look at, and easier to change, but there isn't really any way of telling how far along the test is (unless you know it by heart). In the long list approach, you could see all the Done/Passed outcomes and how many remained, now there is no way of telling.
Any tips on making some kind of progress indication?
Solved!
Go to Solution.As ObjectReference parameter, you should use 'Nothing'. The last parameter (synchronuous?) you can choose true or false. Please refer to the documentation of PostUIMessageEx for further information.
The numeric parameter should range between 0-100. Since it is "Progress Percent", this makes sense, does it?
The status bar has several panes, one e.g. displaying the logged in user or the used process model. The pane on the right most side will display the Progress Percent if used in your sequence.
The default reporting, as already stated, includes this feature. So if you have a sequence with e.g. 500 steps, the reporting "will have a visible progress" in that pane (with less than 100 steps, it is most often too fast to see). Remember that NI Sequence Editor and the Full Featured User Interfaces do have this feature, the Simple UI does not have it.
Norbert
CEO: What exactly is stopping us from doing this?
Expert: Geometry
Marketing Manager: Just ignore it.
Maybe you are looking for
-
My current hard drive must be replaced. It is about to die. I want to save my bookmarks. Is this possible?
-
Acrobat Pro XI Mac won't print a .pdf file, but Apple Preview will print correctly
Hello, I have Acrobat Pro XI for Mac. recently I've run into pdf files that will show the document on screen ok, show up on print preview screen ok, but when I send it to a printer I either get: 1. no printout... the document passes through the pri
-
IPad Air running 8.2 - one of the two cameras shows very weird colors.
This started a couple weeks ago. The outward camera view shows very weird colors. I have looked on line for a solution and found a reference that said the 'live camera filter is stilled turned on' but I don't think live filters exist any more. ive tr
-
How to add an action after closing a ModalInternalFrame?
Hi folks I created a ModalInternal Frame: tableMif = new ModalInternalFrame( getString("ifikPatList"), this, tableP); tableMif.putClientProperty(CLOSE_ON_F1, true);which is being closed when I push F1. But additional to this, I want some other code
-
H:inputText and immediate="true" not updating cached backing bean value
Hi, I am having a problem with h:inputText and immediate="true" when returning back to the same page.I looked through the forums but the only solution to remove the page from the session works only if I don't have to change any button label names in