[Tutor] Question on a select statement with ODBC

Alan Gauld alan.gauld at btinternet.com
Wed Oct 22 19:12:53 CEST 2014


On 22/10/14 16:06, Al Bull wrote:
> I don't think I explained the problem properly.     I have several hundred
> thousand records in the ORD table.  There are many instances of records with
> identical ORD_DBASUB values.   Where duplicates exist, I only want to keep
> the most current record.

Ah, OK thats very different.
You can do it in SQL but it gets messy and depends on the details of the 
ODBC SQL, which I don't know... It would involve a nested select
with an inner join I suspect.

> This code works except in very specific cases.  Take the following example:
>   ORD_DBASUB DATE
> 1) 100000360 2004-11-02
> 2) 100000360 2004-09-03
> 3) 100000334 2004-04-05
> 4) 100000334 2004-03-08
>
> Record #3 is correctly saved, but record #4 is not removed.    It appears
> that ROW is being moved to the next entry after the ord_rows.remove

That's correct you should never modify the collection that you are 
iterating over with a for loop.

Instead convert to using a while loop and only increment the index
if you don't remove an thing.

Alternatively make a copy of the collection and iterate over that,
but a while is usually preferable IMHO.

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos



More information about the Tutor mailing list