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

Тема в разделе "Lotus - Программирование", создана пользователем NickProstoNick, 19 мар 2009.

  1. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    вот фрагмент кода
    Код (Text):
        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
    Подскажите.. что не так?
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    а ты результат FindFirstElement используй, а не слепо вызываешь FindNextElement
    похоже, что не найден первый элемент...

    Код (Text):
    if rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL ) then
    ...
    While rtnav.FindNextElement( RTELEM_TYPE_TABLECELL)
    ...
    аа... прошу прощения, может быть, что цикл прошел несколько итераций и ошибка возникает когда уже все ячейки пройдены...
    не пользовал эти методы, может проще всего поставить просто обработчик этой ошибки и пропускать ее...
    on error XXX resume next
     
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    дело в том, что захода в цикл даже небыло :)
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А ты проверку сделал как Akupaka написал?
     
  5. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    да. не помогает... зацикливается :)
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    у меня с вами уже окончательно поехало все :))
    ты ж говоришь, что не заходит в цикл, как же зациклилось?..
     
  7. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    если ставить проверку на ошибку
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Так ты не ставь обработчик ошибок. Он здесь не нужен.
    Наверное у тебя Call rtnav.FindFirstElement( RTELEM_TYPE_TABLECELL ) вернуло false. Где в этом случае находится указатель не понятно, поэтому на rtnav.FindNextElement( RTELEM_TYPE_TABLECELL) появляется ошибка.
    В принципе можно сразу искать ячейку. Т.е. Call rtnav.FindFirstElement( RTELEM_TYPE_TABLE ) можно выкинуть.
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    код где? ну почему просить надо? ))
     
  10. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    прошу прощения.... но похоже вопрос снимается...
    Похоже что с таблицей в тестовом документе что-то было... что именно не знаю.... взял новый документ - вроде бы все нормально
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ты от ответа-то не уходи :))
    код должен уметь обрабатывать такие ситуации, поэтому лучше разрулить до...
     
Загрузка...

Поделиться этой страницей