I am assuming this frame has a header that you can see with your eyeballs onscreen in your application?
Is it possible you're having QTP look at the wrong object?
Sometimes web designers layer objects on top of each other. Sometimes one object is inside another object at the same x,y coords with the same height & width. In cases like this, the buried object might be the visible one, with a valid value in innertext, but the invisible object on top is the one you are hitting when you point to it with QTP.
When this stuff happens, it can be very hard to point QTP at the object that isn't on top of the layered objects.
You can try learning all the objects on the page into the OR. You do this by clicking Add Object to Local then selecting the page object then choosing "all child objects" from the popup. Once they're all in the OR, you can make them flash on screen by selecting any object in the OR and clicking "Highlight in Applcation" - watch your application to see what flashes.
Now all you ahve to do is go through all those objects you added and for each object for which you're not sure what it is you flash it. You can remove objects you don't want filling up your OR. Eventually you're likely to find another object in the place of your frame that has an innertext and flashes when you tell it to. Rename this to something you won't forget and use it in your script.
Maybe this isn't the problem, but I have seen this happen to me. Twice just in the last couple months. And these steps found the hidden object I was looking for every time.