Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с использованием "Обозреватель веб-страниц (Microsoft)" в форме
 
 автор: Torny   (02.08.2007 в 13:36)   личное сообщение
 
 

Требуется несколько раз подряд открывать в этом компоненте разные страницы и анализировать их код. Думал, что получиться сделать все поточно в одной процедуре. Но не работает следующая конструкция:

WebBrowser.Navigate "<ссылка>"
Do Until WebBrowser.ReadyState = READYSTATE_COMPLETE
Loop
<анализ WebBrowser.Document.body.outerHTML>

Курсор выполнения просто не выходит из цикла ожидания загрузки. При этом после прерывания Ctrl+Break и запуска на продолжение переход на следующую после цикла команду выполняется.
Во время прерывания значение WebBrowser.ReadyState = READYSTATE_COMPLETE. А при "зависании" оно все время равно 1, т.е. READYSTATE_LOADING.

Как правильно сделать? (Access 2003)

  Ответить  
 
 автор: osmor   (02.08.2007 в 14:28)   личное сообщение
 
 

почитайте вот это
http://hiprog.com/index.php?option=com_content&task=view&id=251661548&Itemid=35

  Ответить  
 
 автор: Torny   (02.08.2007 в 15:43)   личное сообщение
 
 

osmor, спасибо, но, боюсь, мне не хватает квалификации.

В указанной Вами статье речь идет о закачке файлов + бездна кода. Мне же нужно простое, но гибкое прикладное решение для анализа содержимого web страниц, поэтому я взял ActiveX компонент WebBrowser.
У меня есть решение, основанное на использования события WebBroser_DocumentComplete, но оно громоздкое, потому что это событие наступает при закачке каждого следующего документа и их анализ приходится громоздко разветвлять.

  Ответить  
 
 автор: Torny   (02.08.2007 в 16:12)   личное сообщение
 
 

Оказалось правильно так:

While wb.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend

  Ответить  
 
 автор: Serge Gavrilov   (02.08.2007 в 16:20)   личное сообщение
 
 

а что же вы DoEvents не добавили?

Do Until WebBrowser.ReadyState = READYSTATE_COMPLETE
    DoEvents
Loop

или так :

    On Error Resume Next
    While Me.WebBrowser.Document.ReadyState <> "complete"
        DoEvents
    Wend
    On Error GoTo 0

  Ответить  
 
 автор: Serge Gavrilov   (02.08.2007 в 16:22)   личное сообщение
 
 

пока набирал ответ и проверял, вы и сами нашли решение проблемы...

  Ответить  
 
 автор: Torny   (02.08.2007 в 16:41)   личное сообщение
 
 

Большое спасибо. Мог ведь и не найти

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList