Thank you guys.
Looping at the Item table and reading the header as I was doing with the other tables, coupled with binary search has stopped the report from coming to a run time error.
I've tried to mark all the answers that I used as helpful and have awarded the most detailed with correct answer.
I didn't get round to trying the parallel cursor or field symbols as it is now solved so I am unable to comment on how effective these methods are.