PHP- foreach loop is making me disy!

So basically I have a session array that contains a list of
items.
And I have a form that displays that list, with a checkbox
next to each item.
If a checkbox is checked, and the submit button
('removeSelected') is pressed, the item should be
removed from the session array.
So I wrote the following php code, to remove from my
array($_SESSION['buyer']) the values from my
form $_POST array, if they are identical:
<?php
if(isset($_POST['removeSelected'])){
foreach($_SESSION['buyer'] as $session_key =>
$session_item){
foreach ($_POST as $key => $post){
if($post == $session_item[2]){
unset($_SESSION['buyer'][$session_key]);
unset($_POST[$key]);
?>
The problem is that if for example there are 5 items that are
the SAME, and 4 are checked for
removal, only ONE of them is removed from the session array,
instead of 4.
I tried a variation of the code, just by removing the line:
unset($_POST[$key]);
If I do that, if 5 items are the same and only ONE is checked
for removal, the 5 items are removed.
Either way, it's not doing what I want!
Any suggestion?
seb ( [email protected])
http://webtrans1.com | high-end web
design
An Ingenious WebSite Builder:
http://sitelander.com

So basically I have a session array that contains a list of
items.
And I have a form that displays that list, with a checkbox
next to each item.
If a checkbox is checked, and the submit button
('removeSelected') is pressed, the item should be
removed from the session array.
So I wrote the following php code, to remove from my
array($_SESSION['buyer']) the values from my
form $_POST array, if they are identical:
<?php
if(isset($_POST['removeSelected'])){
foreach($_SESSION['buyer'] as $session_key =>
$session_item){
foreach ($_POST as $key => $post){
if($post == $session_item[2]){
unset($_SESSION['buyer'][$session_key]);
unset($_POST[$key]);
?>
The problem is that if for example there are 5 items that are
the SAME, and 4 are checked for
removal, only ONE of them is removed from the session array,
instead of 4.
I tried a variation of the code, just by removing the line:
unset($_POST[$key]);
If I do that, if 5 items are the same and only ONE is checked
for removal, the 5 items are removed.
Either way, it's not doing what I want!
Any suggestion?
seb ( [email protected])
http://webtrans1.com | high-end web
design
An Ingenious WebSite Builder:
http://sitelander.com

Similar Messages

  • When placing each search result in its own collapse panel, only first panel works (PHP foreach loop)

    Hi there,
    <?php foreach ($results as $result): ?>
      <div id="CollapsiblePanel1" class="CollapsiblePanel">
        <div class="CollapsiblePanelTab">
    <?php echo htmlspecialchars($result['name'], ENT_QUOTES, 'UTF-8'); ?>   
        </div>
        <div class="CollapsiblePanelContent">
      <?php echo htmlspecialchars($result['description'], ENT_QUOTES, 'UTF-8'); ?>
        </div>
      </div>
      <?php endforeach; ?>
    <script type="text/javascript">
    var CollapsiblePanel1 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel1");
      </script>
    Above is the segment where I want to generate a list of results using PHP/SQL. I know for sure that there isn't anything wrong with the PHP, there's something about the collapsible panels that I can't get my head around...
    WHAT I WANT IT TO DO:
    Display the result of my query, each in a collapsible panel with the Name in the panel's tab and the additional Description on the panel's content area. Do this for all results.
    WHAT IT DOES:
    The above, except that only the first collapsible panel works (collapses fine). The results following are still in collapsible panels with the exception that they don't collapse at all.
    So can anyone come up with a good solution to fix this? Something quick will do (that I don't have to make drastic changes to my code), I suspect that it has something to do with this line:
    var CollapsiblePanel1 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel1");
    That it recognizes the first panel as CollapsiblePanel1, the other panels are just unknown... I don't know, that's all I can come up with. Thanks for your time.

    Thanks for the tip Gramps, got to the solution!
    <?php foreach ($results as $result): ?>
      <div id="CollapsiblePanel<?php echo htmlspecialchars($result['id'], ENT_QUOTES, 'UTF-8'); ?>"  " class="CollapsiblePanel">
        <div class="CollapsiblePanelTab">
    <?php echo htmlspecialchars($result['name'], ENT_QUOTES, 'UTF-8'); ?>  
        </div>
        <div class="CollapsiblePanelContent">
      <?php echo htmlspecialchars($result['description'], ENT_QUOTES, 'UTF-8'); ?>
        </div>
      </div>
    <script type="text/javascript">
    var CollapsiblePanel<?php echo htmlspecialchars($result['id'], ENT_QUOTES, 'UTF-8'); ?> = new Spry.Widget.CollapsiblePanel("CollapsiblePanel<?php echo htmlspecialchars($result['id'], ENT_QUOTES, 'UTF-8'); ?>");
      </script>
      <?php endforeach; ?>
    By allowing the script to loop and matching the id. Nice suggestion for the accordion but unfortunately the code above was just an example... the actual results will include tables, <hr> and whatnot.
    Being new to the Dreamweaver scene (actually to be honest, I've only started learning about web development a week ago) why are the Spry js (or just Spry in particular) files so large? Are there plugins/methods I can get to delete some features I don't need? I have absolutely no experience with JS... yet.

  • SSIS 2008 R2 Foreach Loop Container on ADO object in Endless Loop

    SSIS 2008 R2
    I have an object Variable populated by a SQL Query.  I then attach it to a Foreach Loop Container with "Foreach ADO Enumerator" and define the variable mappings.  Inside the Foreach Loop is a series of tasks.  It appears that the
    tasks are processing each of the rows in the Object but it also appears that the Foreach loop never stops but runs until I kill it.  I was under the impression that the Foreach loop would stop when after the last row in the Object was consumed. 
    As it is now, the Foreach Loop is useless as it runs forever. 
    Any suggestions would be appreciated.
    Thanks,
    Michael
    P.S.   I have determined that the ADO object has a size or count limitation which if exceeded causes the Foreach Loop task to malfunction in both Studio and as an Agent job.  I could not find a limit in MS docs, but there sure seems to be
    a limit somewhere which everyone should be aware of.  5,000 rows exceeds the limit, in my case.

    A typical memory limit rather, especially noticeable in dev env where it is 32 bit
    http://www.codeguru.com/csharp/.net/article.php/c16921/Understanding-NET-application-options-for-32-and-64bit-systems.htm
    Arthur My Blog

  • 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.

  • ConcurrentModificationException while attempting a foreach loop

    I'm writing a bit of code using JGraphT (not necessarily important that you understand how to use it though), and I'm running into a ConcurrentModificationException.
    public static ArrayList<DirectedGraph<Long, DefaultEdge>> level2()
              Set<Long> vertices = graph.vertexSet();
              ArrayList<DirectedGraph<Long, DefaultEdge>> graphs = new ArrayList<DirectedGraph<Long, DefaultEdge>>();
              ArrayList<GraphSizeStorage> storage = new ArrayList<GraphSizeStorage>();
              int counter = 0;
              double foo = vertices.size()/10;
              System.out.print("\nCalculating the Level 2 graphs for all nodes: ");
              for(Long v : vertices)
                   if(counter % foo == 0 && counter >= foo) { System.out.print("."); }
                   DirectedGraph<Long, DefaultEdge> g = new DefaultDirectedGraph<Long, DefaultEdge>(DefaultEdge.class);
                   g.addVertex(v);
                   System.out.println("Adding Vertex: " + v);
                   Set<DefaultEdge> edges = graph.outgoingEdgesOf(v);
                   for(DefaultEdge e : edges)
                        g.addVertex(graph.getEdgeTarget(e));
                        System.out.println("Adding Vertex: " + graph.getEdgeTarget(e));
                        g.addEdge(v, graph.getEdgeTarget(e));
                        System.out.println("Adding Edge from " + v + " to " + graph.getEdgeTarget(e));
                   //At this point, level 1 should be complete.
                   //To get level 2, I'll get a set of g's vertices, and for all vertices that aren't v,
                   //I'll basically add a new edge, the same way I did above.
                   DirectedGraph<Long, DefaultEdge> gClone = g;
                   Set<Long> gVertices = gClone.vertexSet();
                   for(Long v2 : gVertices)
                   {At that foreach loop near the end, I get the exception. The two lines before it were recently modified (to no avail) in hopes of fixing it; instead of two lines, it used to be one line that said
    Set<Long> gVertices = g.vertexSet();
    My question is: Is there an easy way to get around this exception? Would it be possible to copy the variable g instead of making a reference to it? How about its vertexSet?
    Thanks for your help
    KFJ

    KungfuJoe wrote:
    Eh, forget about it. I modified the loops, they don't give me too much trouble anymore. Optimization is key I suppose.If "optimisation" mean don't modify the collection when iterating over it.

  • How can I load a .xlsx File into a SQL Server Table using a Foreach Loop Container in SSIS?

    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

  • SSIS BULK INSERT unsing UNC inside of ForEach Loop Container Failed could not be opened. Operating system error code 5(Access is denied.)

    Hi,
    I am trying to figure out how to fix my problem
    Error: Could not be opened. Operating system error code 5(Access is denied.)
    Process Description:
    Target Database Server Reside on different Server in the Network
    SSIS Package runs from a Remote Server
    SSIS Package use a ForEachLoop Container to loop into a directory to do Bulk Insert
    SSIS Package use variables to specified the share location of the files using UNC like this
    \\server\files
    Database Service accounts under the Database is runing it has full permission on the share drive were the files reside.
    In the Execution Results tab shows the prepare SQL statement for the BULK insert and I can run the same exact the bulk insert in SSMS without errors, from the Database Server and from the server were SSIS package is executed.
    I am on a dead end and I don’t want to re-write SSIS to use Data Flow Task because is not flexible to update when metadata of the table changed.
    Below post it has almost the same situation:
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8de13e74-709a-43a5-8be2-034b764ca44f/problem-with-bulk-insert-task-in-foreach-loop?forum=sqlintegrationservices

    Insteresting how I fixed the issue, Adding the Application Name into the SQL OLAP Connection String Fixed the issue. I am not sure why SQL Server wasn't able to open the file remotely without this.

  • [Forum FAQ] How to calculate the total count of insert rows within a Foreach Loop Container in SSIS?

    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

  • Can I append the file name from a Foreach Loop Container Enumerator into a SQL Server Statement?

    I would like to pass back via an Email the name of the file that was successfully FTP'ed to a remote server. And I was hoping to do this via an Execute SQL Task with the following SQL Statement...but I just don't know if it will append the Foreach Loop Container
    variable enumerator to the appended Email message that I am building in SQL Server or if I can and how I can...
    I sort of get the feeling that I can try and do this via Dynamic SQL...I just don't know if by building dynamic SQL if my Foreach Loop Container enumerator variable will be appended to my Email Message via the SQL Server UPDATE 
    @[User::FTPFHFileName]
    Or do I add a Data Flow Task and an OLE DB Command and pass the Foreach Loop Container enumerator variable to a Stored Procedure referenced in the OLE DB Command via a "?"
    Thanks for your review and am hopeful for a reply.

    Hello,
    It seems that the issue had been solved and thanks for your sharing. It will be very beneficial for other community members who have similar questions.
    I’d like to mark this issue as "Answered". Please also feel free to unmark the issue, with any new findings or concerns you may have.
    Regards,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • Strange issue with rights of account, used by SSIS (Foreach Loop Container does not return file names without Admin rights on server)

    Hello everyone.
    Faced very strange issue with account, which is used to run SSIS package.
    The specific package uses Foreach Loop Container to retrieve file names within the specified folder, and put them into Import file task.
    The package is set up to run under specific service account. This service account is given all permissions (Full control) to the folder where source files reside.
    So the issue is: SSIS package fails to execute this task (Foreach Loop Container and then Import), and shows that no files are found in the directory (although files ARE there).
    Once we're adding the service account into local Administrators group on the SQL Server, it works! Removing - does not work again. We cannot leave the service account as SQL server's admin as it's prohibited by our IT policies, and is just a bad practice.
    Any ideas, please? 
    MCP

    Here's the real log output:
    Date 16.04.2014 12:47:09
    Log Job History (RU-BW: Update)
    Step ID 1
    Server Server
    Job Name RU-BW: Update
    Step Name bw_import_cust_master_data
    Duration 00:00:02
    Sql Severity 0
    Sql Message ID 0
    Operator Emailed
    Operator Net sent
    Operator Paged
    Retries Attempted 0
    Message
    Executed as user: service_account Microsoft (R) SQL Server Execute Package Utility  Version 10.50.4286.0 for 64-bit  Copyright (C) Microsoft Corporation 2010. All rights reserved.    Started:  12:47:09  Error: 2014-04-16 12:47:11.45
        Code: 0xC0202070     Source: bw_import_cust_master_data Connection manager "Input"     Description: The file name property is not valid. The file name is a device or contains invalid characters.  End Error  Error:
    2014-04-16 12:47:11.47     Code: 0xC0202070     Source: bw_import_cust_master_data Connection manager "Input"     Description: The file name property is not valid. The file name is a device or contains invalid characters.  End
    Error  Error: 2014-04-16 12:47:11.48     Code: 0xC0202070     Source: bw_import_cust_master_data Connection manager "Input"     Description: The file name property is not valid. The file name is a device or contains invalid
    characters.  End Error  Error: 2014-04-16 12:47:11.48     Code: 0xC020207E     Source: Import file Flat File Source [1]     Description: The file name is not valid. The file name is a device or contains invalid characters.
     End Error  Error: 2014-04-16 12:47:11.48     Code: 0xC004701A     Source: Import file SSIS.Pipeline     Description: component "Flat File Source" (1) failed the pre-execute phase and returned error code 0xC020207E.
     End Error  DTExec: The package execution returned DTSER_FAILURE (1).  Started:  12:47:09  Finished: 12:47:11  Elapsed:  2.324 seconds.  The package execution failed.  The step failed.
    MCP

  • Foreach Loop Container with a Data Flow Task looking for file from Connection Manager

    So I have a Data Flow Task within a Foreach Loop Container. The Foreach Loop Container has a Variable Mapping of User:FileName to pass to the Data Flow Task.
    The Data Flow Task has a Flat File Source since we're looking to process .csv Files. And the Flat File Source has a Flat File Connection Manager where I specified the File name when I created it. I thought you needed to do this even though it won't really
    use it since it should be getting its File name from the Foreach Loop Container. But when attempting to execute, it is blowing up because it seems to be looking for my test file name that I indicated in the Flat File Connection Manager rather than the file
    it should be trying to process in User:FileName from the Foreach Loop Container.
    What am I doing wrong here??? I thought you needed to indicate a File name within the Flat File Connection Manager even though it really won't be using it.
    Thanks for your review...I hope I've been clear...and am hopeful for a reply.
    PSULionRP

    The Flat File Connection manager's Connection String needs to be set to reference the variable used in the ForEach Loop:
    Arthur My Blog

  • [Solved] Foreach loop that loops over all files in a folder does not consider first file found

    Hello,
    I have a foreach loop in SSIS (as part of Visual Studio 10 and with SQL Server 2012).
    It loops over all files in a folder (ForEach File Enumerator).
    I set the folder: OK
    Traverse Sub folders: OK
    I have set up a Variable in Variable Mappings called FileName so it shows User::FileName: OK
    Index of variable is 0: OK
    It almost works ok. Except that the first file it finds is never considered.
    I set a breakpoint then and the first file it finds, is shown in black in the watch variable window. All subsequent files found are shown in red font. When I change the names of the files so another file is the first file found then it skips the other one
    which now is the first file.
    What is going on here? Why does SSIS skip the first file it finds in a foreach file loop?
    Any suggestions highly appreciated.
    Thank you
    Andi
    Andreas

    "red font - interesting, any example to show us (image)
    It would be interesting to share with us whether you use any file masks or expressions.
    Arthur
    MyBlog
    Twitter
    It appears a variable value turns red when it changes between breakpoints. It started black for the first value (the first file, obtained BEFORE the execution reached the breakpoint), and then turned red. I was able to reproduce this behavior on a test environment.
    However, it did not skip any files.
    OP, please set up the test shown in the image below. Create a breakpoint in the sequence container for the "OnPreExecute" event.

  • ForEach Loop Container Mapping Variable From SSIS Package Not Working In SQL-Server StoredProcedure

    I have an SSIS package that uses a ForEach Loop Container to enumerate Excel Files in a dir. I also have a Task Flow that inserts data from those Excel files into SQL-Server.
    Im trying to insert the file names into a column into the same table in SQL-Server by using a mapping variable in my StoredProcedure.
    Im having trouble with my MappingVariable at the end of the script with red squigglies. The following is my StoredProcedure script.
    CREATE PROCEDURE [dbo].[Insert_F_STG_v2]
    -- Add the parameters for the stored procedure here
    @Hrs float,
    @Type nvarchar(100),
    @SN nvarchar(100),
    @Op nvarchar(100),
    @[USER::CurrentFileName]
    AS
    BEGIN
    SET NOCOUNT ON;
    INSERT INTO [CRM_RC].[dbo].[F_StgTbl]
    [Hrs],
    [Type],
    [SN],
    [Op],
    [Report_Date]
    VALUES
    @Hrs ,
    @Type,
    @SN,
    @Op,
    @[USER::CurrentFileName]
    END
    The last @[USER::CurrentFileName] in the Values block at the bottom of the script is the one giving me issues.
    The following is the error:
    Msg 102, Level 15, State 1, Procedure Insert_F_STG_v2, Line 95
    Incorrect syntax near 'USER::CurrentFileName'.

    This seems to be the solution, but get the following exception: 
    [Derived Column [2]] Error: The "Derived Column" failed because truncation occurred, and the truncation row disposition on "Derived Column.Outputs[Derived Column Output].Columns[Derived Column 1]" specifies failure on truncation. A truncation error occurred
    on the specified object of the specified component.
    AND:  [SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "Derived Column" (2) failed with error code 0xC020902A while processing input "Derived Column Input" (3). The identified component returned
    an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.

  • SSIS Variable Expression not Picking Up the value dynamically set from a Foreach Loop container

    Hello, everyone,
    I have three variables in my SSIS package:
    1) ReportLoc that holds a file path (c:\test, not changed)
    2) ReportFileName that holds a file name that get assigned in a Foreach Loop container (file1, file2, etc.)
    3) OutputFilePath that is the full file pathname, set in the expression: @[User::LocalPath] + "\\" +  @[User::ReportFileName]
    All three variable have the package scope.
    I expect OutputFilePath will be asigned values like c:\test\file1, c:\test\file2, etc.
    However, it alwasy remains an empty string.
    Anything I did wrong? Any help and information is greatly appreciated.
    Regards 

    That's it -- I forgot to set Evaluate as Expression to true.
    Thank you very much for your reply and solution! Really appreciate it!
    Regards.

  • 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,
    Sri

    Hi 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

Maybe you are looking for