﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » StrataFrame Application Framework - V1 » Business Objects and Data Access (How do I?)  » Deleting within a loop</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Wed, 29 Apr 2026 15:52:23 GMT</lastBuildDate><ttl>20</ttl><item><title>Deleting within a loop</title><link>http://forum.strataframe.net/FindPost32916.aspx</link><description>Hi there,&lt;br/&gt;&lt;br/&gt;wether I am deleting records within&amp;nbsp;a do .. Loop while bo.movenext Loop or within a&lt;br/&gt;&lt;br/&gt;For each enumerable construct, not all records which fulfill a condition to be deleted, are deleted.&lt;br/&gt;&lt;br/&gt;As I read some other posts, I already checked that there are no filters or sorts active.&lt;br/&gt;&lt;br/&gt;What might be the reason for this? Or what should I do instead?&lt;br/&gt;&lt;br/&gt;Thanks in advance &lt;br/&gt;&lt;br/&gt;Thomas</description><pubDate>Fri, 13 Mar 2015 09:29:45 GMT</pubDate><dc:creator>Thomas Holste</dc:creator></item><item><title>RE: Deleting within a loop</title><link>http://forum.strataframe.net/FindPost32920.aspx</link><description>Hi Ben,&lt;br/&gt;&lt;br/&gt;thank you für making that clear.&lt;br/&gt;&lt;br/&gt;Best regards&lt;br/&gt;&lt;br/&gt;Thomas</description><pubDate>Fri, 13 Mar 2015 09:29:45 GMT</pubDate><dc:creator>Thomas Holste</dc:creator></item><item><title>RE: Deleting within a loop</title><link>http://forum.strataframe.net/FindPost32919.aspx</link><description>Larry's solution will work.&lt;br/&gt;&lt;br/&gt;&lt;div&gt;The reason that cycling forward will not work is that the rows are removed from the business object when they are deleted. &amp;nbsp;When you cycle forward through the records and move the CurrentRowIndex forward, it will skip over items like this example:&lt;br/&gt;&lt;br/&gt;&lt;div&gt;First Step:&lt;br/&gt;&lt;br/&gt;&lt;div&gt;Row1 &amp;lt;- CurrentRowIndex = 0 &amp;lt;- This one is deleted&lt;div&gt;Row2&lt;div&gt;Row3&lt;div&gt;Row4&lt;div&gt;Row5 &amp;lt;- Count = 5&lt;br/&gt;&lt;br/&gt;&lt;div&gt;Second step:&lt;br/&gt;&lt;br/&gt;&lt;div&gt;Row2&amp;nbsp;&lt;div&gt;Row3 &amp;lt;- CurrentRowIndex = 1 &amp;lt;- This one is deleted&lt;div&gt;Row4&lt;div&gt;Row5 &amp;lt;- Count = 4&lt;br/&gt;&lt;br/&gt;&lt;div&gt;So, on each step, the current row index is advanced, but it skips an item, because all of the items are shifted up at the same time, because you just deleted one of them from the list.&lt;br/&gt;&lt;br/&gt;&lt;div&gt;There's basically 3 options:&lt;div&gt;&lt;ol&gt;&lt;li&gt;Larry's solution of working backwards. &amp;nbsp;The current row index shifts the same direction as the items being deleted.&lt;/li&gt;&lt;li&gt;Set ShowDeletedRows = True on the business object before you loop through them. &amp;nbsp;This is probably the easiest because you don't have to change your loop logic. &amp;nbsp;All of the records are still visible in the BO after they are deleted, but are flagged as deleted for the save. &amp;nbsp;This is only logical if you're marking the records as deleted to do a bo.Save() at the end.&lt;/li&gt;&lt;li&gt;Loop while Count &amp;gt; 0 like this:&lt;/li&gt;&lt;/ol&gt;While bo.Count &amp;gt; 0 '-- or Not bo.IsEmpty&lt;div&gt;&amp;nbsp; &amp;nbsp; bo.DeleteCurrentRow() '-- Each time you delete a row, the rows will shift up so the next row to delete is always CurrentRowIndex = 0&lt;div&gt;End While</description><pubDate>Tue, 10 Mar 2015 07:00:15 GMT</pubDate><dc:creator>StrataFrame Team</dc:creator></item><item><title>RE: Deleting within a loop</title><link>http://forum.strataframe.net/FindPost32918.aspx</link><description>Hi Larry,&lt;br/&gt;&lt;br/&gt;thanks for your help. It seems to work and I will test it a little bit more. But I still wonder why the other way does not work.&lt;br/&gt;&lt;br/&gt;Best regards&lt;br/&gt;&lt;br/&gt;Thomas</description><pubDate>Tue, 10 Mar 2015 05:01:28 GMT</pubDate><dc:creator>Thomas Holste</dc:creator></item><item><title>RE: Deleting within a loop</title><link>http://forum.strataframe.net/FindPost32917.aspx</link><description>Try looping backwards.&amp;nbsp;The following assumes you are only going to mark the records&lt;br/&gt;as deleted and you are going to do a save when you're done to do the actual delete/s.&lt;br/&gt;&lt;br/&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;Not&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;businessObject&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#800080" face="Consolas" size="2"&gt;&lt;font color="#800080" face="Consolas" size="2"&gt;&lt;font color="#800080" face="Consolas" size="2"&gt;IsEmpty&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;Then&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; businessObject&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;MoveLast&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;()&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;Do&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&amp;lt;Some logic to determine you should delete the current row&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;Then&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;businessObject&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;DeleteCurrentRow&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;True&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;)&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;End&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;If&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;Loop&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;While&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;businessObject&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;MovePrevious&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; businessObject.save()&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;font color="#08c8c8" face="Consolas" size="2"&gt;&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;End&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;If&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;font color="#0000ff" face="Consolas" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&lt;font color="#494949" face="Consolas" size="2"&gt;&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;font face="Consolas" size="2"&gt;&lt;font face="Consolas" size="2"&gt;&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;</description><pubDate>Tue, 10 Mar 2015 01:04:17 GMT</pubDate><dc:creator>Larry Caylor</dc:creator></item></channel></rss>