Kevin,
Maybe it's the end of the day and my eyes are playing tricks on me, but... ;)
The eventual call to oTable.SetTableLocation is using 'cTable', which was never declared above. If it's not a typo, then what is the value of cTable? Have you stepped through this with a debugger to see what values are being passed to Crystal?
Also, the line where you compare the alias to the table's location...are you sure you're getting a hit each time? I think I see what the code is trying to do...make sure that the tables are set in the correct order based on the design time order...but I'm wondering if maybe you're not getting any hits. Again, you should trace through with the debugger.
Kevin