| 
 | 
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Ну т.е. постараюсь описать суть. 1. Под конец события Form_Load (т.е. когда все типа готово уже к работе) запускается таймер: Все готово к работе означает, что ADODB.Connection подключено к БД, все Listview загружены данными из таблиц этой БД, все интерфейсы пользователя облагорожены тематически и т.п., все сабклассинги инициализированы и т.п. Код: plaintext 1. 2. 2. Смысл таймера(Interval=1000): сделать несколько "умных" запросов к БД и на основании этого обновить отдельные строчки в ListView. Код: plaintext 1. 2. 3. 4. 5. 3. Ошибка возникает после выполнения следующего кода но только если вызвать контекстное меню "очень быстро после запуска формы" по ощущениям: если вызвать контекстное меню до первого срабатывания таймера то ошибка будет в момент его срабатывания. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. если HTest выдаст ошибку, значит мы находимся не на строчке ListView и выходим. если мы находимся на строчке, то запускается ф-ция ConfigureMenu, кот. в завис. от содержания выделенной строчки делает отдельные пункты меню(а также сопряженного Toolbar и т.п.) enable/disable если кнопка мыши правая, то контекстное меню сразу после выводится на экран в месте щелчка. Смысл в чем: если этот код (правая кнопка мыши и на строчке Listview) выполнить до первого срабатывания Timer, то ReadApplyChanges_BD вышибет программу: ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll Почему так думаю... msjet яно намекает на общение с БД, а с БД после загрузки больше ничего не работает. Если увеличить время таймера до 2сек, то ошибка не наблюдается Если убрать ConfigureMenu из ListView1_MouseUp, то ошибка не наблюдается Умный человек подскажет: надо добавить ключик /verbose. Нет проблем, добавил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Я встречался с такими ситуациями, когда внесение миллисекундной задержки посредством включения дебага полностью устраняет проблему ради обнаружения которой этот дебаг включался. Че вообще делать в таком случае? Для устранения ну скажем наверно могу запустить таймер c нек. "отсрочкой". Надо ли пытаться понять? Или надо обойти, "как получится" и забыть? Ошибка возникает как в VB-среде, так и в случае exe. Прога достаточно навернута, но с БД ранее не работала...можно конечно попытаться набросать тестовый проект, но не уверен что сумею "высечь искру". ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.02.2011, 00:07 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Вот еще... искра без труда вышибается на любой 32-битной OS (XP, Vista,7), но положить прогу таким образом на Vista x64, win7 x64 мне не удается. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.02.2011, 00:51 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Пока удалось выяснить, что 1) так не вылетает Код: plaintext 1. 2. 3. 4. 2) так вылетает Код: plaintext 1. 2. 3. 4. -вылетает не обязательно при "первом срабатывании", но обязательно 1) после вызова контекстного меню 2) в течении относительно короткого времени после старта и сдается мне это "относительно короткое время"=="относительно длинному времени" (на которое я ругался в своем предыдущем топике, что синхронизация connection и БД происходит несколько секунд). Где-то тут очередная дохлая собака зарыта... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.02.2011, 01:23 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  big-dukeПочитайте про раннее связывание VS позднее связывание. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.02.2011, 02:10 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  big-dukeПочитайте про раннее связывание VS позднее связывание. Да уж. Иногда лучше быть безграмотным и не читать умных книжек. Не хотел я с этим "связываться", но "связался". Короче так: Было: Microsoft Jet and Replication Objects 2.6 Library (msjro.dll) included Код: plaintext Стало: Microsoft Jet and Replication Objects 2.6 Library (msjro.dll) included Код: plaintext 1. 2. 3. Как вариант, Код: plaintext 1. 2. 3. но CreateObject() считаю надежней. Ссылки на ADODB тоже видимо буду выкидывать...от греха подальше. Честно нет желания подобные глюки разгребать... Вот те и философские беседы...к чему приводють панимаешь ли. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 01.02.2011, 02:30 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Такая же ошибка возникла в другом (менее навороченном!) модуле в совершенно другом контексте и не при старте (не успел убрать As New JRO.JetEngine) при промежуточном тестировании. Применение позднего связывания через CreateObject сразу вылечило. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.02.2011, 00:51 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Если у тебя  подключена  " Microsoft Jet and Replication Objects 2.6 Library ". То при старте программы, еще до выполнения первой команды программы, сам VB-runtime попытается подключить библиотеку " Microsoft Jet and Replication Objects 2.6 Library " и обязательно именно версии 2.6. Если библиотека  не подключена  а ты используешь  CreateObject("JRO.JetEngine") , то runtime соответственно не будет подключать библиотеку заранее, а во время исполнения этой команды попытается создать объект любой доступной версии (будь это 2.6, 2.10 или 1.0) Та которая у юзера была проинсталлирована последней и захватила себе главный стэм - JRO.JetEngine.  Можно в принципе указывать и версию CreateObject("JRO.JetEngine.2.6") , но это может не сработать если данной конкретной версии у юзера нет. За списком возможных имен ходи в регистри в HCR. Если ты пишешь Public my_JRO As New JRO.JetEngine это объявляет объект как принадлежащий определенному классу и создает этот объект (что-то типа первичной инициализации) Если ты пишешь Public my_JRO As JRO.JetEngine это объявляет объект как принадлежащий определенному классу, но не создает объект (ему надо будет потом отдельно дать команду new) В обоих случаях это требует подключения библиотеки. Иначе runtime при загрузке не сможет узнать тип объекта. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.02.2011, 01:33 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Иногда предпочтительнее раннее связывание. Тогда лучше устанавливать reference на библиотеку с наименьшим номером, который устраивает, например, на 2.1 Ну и придется её установить на время компиляции. В таком случае скомпилированная программа при запуске подключится к более поздней зарегистрированной библиотеке, установленной на конкретном компьютере пользователя, например, к 2.6, если нет 2.1, но не подключится к 1.0 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.02.2011, 05:46 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Все рассуждения и объяснения по поводу того на какую версию делать Reference и какая версия при этом будет задействована, безусловно полезны и дополняют багаж знаний, но это скорее дополнение к пониманию ответа на мой предыдущий вопрос об ADODB.  /topic/823344&pg=2 (вот эта тема в конце) =============================================== Если говорить непосредственно по теме вопроса случайный crash msjetoledb40.dll в момент Код: plaintext White OwlЕсли ты пишешь Public my_JRO As New JRO.JetEngine это объявляет объект как принадлежащий определенному классу и создает этот объект (что-то типа первичной инициализации) Если ты пишешь Public my_JRO As JRO.JetEngine это объявляет объект как принадлежащий определенному классу, но не создает объект (ему надо будет потом отдельно дать команду new) В обоих случаях это требует подключения библиотеки. Иначе runtime при загрузке не сможет узнать тип объекта. В любом из этих случаев на ошибку нарываешься. Она исчезает только если "я пишешь" как не принадлежащий определенному классу : Код: plaintext При этом любой вариант: 1) Set my_JRO = New JRO.JetEngine \'(библиотека подключена ) 2) Set my_JRO = CreateObject("JRO.JetEngine") \'библиотека неважно подключена или нет глюков не дает. Причем глюк имеет место быть 1) На любой OS 32-bit включая ту XP-32 на которой установлен VB и на кот. делаешь проект 2) как в случае exe так и в случае среды VB 3) нет нормального объяснения, т.е. не делаю ничего незаконного и носит странно-произв. характер. По поводу версий разных: одна только версия Microsoft Jet and Replication Objects 2.6 Library (msjro.dll). Не из чего выбирать. А вот на любой x64 глюков нет при любых вариантах. Видимо там используется "другая"- "безглючная" библиотека. Т.е. как бы наверно ищу косвенного подтверждения что в данном случае правильно делаю 1) Не привязывать библиотеку 2) Делаю позднее связывание без указания версии. Ну, если это устраняет проблему... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.02.2011, 11:56 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Дмитрий77Она исчезает только если "я пишешь" как  не принадлежащий определенному классу  : Код: plaintext Код: plaintext ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.02.2011, 17:56 | 
  
  
  
   | 
||
| 
 
Странная ...обнаружена ошибка. Приложение будет закрыто ModName: msjetoledb40.dll 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  White OwlЕсли хочешь изначально объект, то и надо объявлять как абстрактный объект... Хочу чтоб было надежно и не глючило. А как оно там называется это вопрос второстепенный... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.02.2011, 18:44 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=60&msg=37096789&tid=2156664]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    16ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    63ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    53ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 236ms | 
| total: | 401ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...