Чтение данных из таблицы в ричтекст-поле

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
вот фрагмент кода
Код:
	Set body = doc.GetFirstItem("SwitchByDepRT")
Set rtnav = body.CreateNavigator
Set rtrange = body.CreateRange

...

Call rtnav.FindFirstElement( RTELEM_TYPE_TABLE )
Call rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL )

While rtnav.FindNextElement( RTELEM_TYPE_TABLECELL)

Call rtrange.SetBegin(rtnav)
tmp = rtrange.TextRun

Wend
на проверке вхождения в цикл возникает ошибка Position is no valid
Подскажите.. что не так?
 
а ты результат FindFirstElement используй, а не слепо вызываешь FindNextElement
похоже, что не найден первый элемент...

Код:
if rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL ) then
...
While rtnav.FindNextElement( RTELEM_TYPE_TABLECELL)
...

аа... прошу прощения, может быть, что цикл прошел несколько итераций и ошибка возникает когда уже все ячейки пройдены...
не пользовал эти методы, может проще всего поставить просто обработчик этой ошибки и пропускать ее...
on error XXX resume next
 
дело в том, что захода в цикл даже небыло :)
 
А ты проверку сделал как Akupaka написал?
 
Так ты не ставь обработчик ошибок. Он здесь не нужен.
Наверное у тебя Call rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL ) вернуло false. Где в этом случае находится указатель не понятно, поэтому на rtnav.FindNextElement( RTELEM_TYPE_TABLECELL) появляется ошибка.
В принципе можно сразу искать ячейку. Т.е. Call rtnav.FindFirstElement( RTELEM_TYPE_TABLE ) можно выкинуть.
 
прошу прощения.... но похоже вопрос снимается...
Похоже что с таблицей в тестовом документе что-то было... что именно не знаю.... взял новый документ - вроде бы все нормально
 
ты от ответа-то не уходи :))
код должен уметь обрабатывать такие ситуации, поэтому лучше разрулить до...
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab