Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Access Violation in msjet40.dll |
Автор: Norfonzor 25.7.2011, 09:31 | ||||
Делфи, работаю с: ADOConnection, ADOCommand, DataSource, ADODataSet, DBGridEh. БД в excel. Схема цепочки для работы с БД http://www.imgup.ru/image-fgsx171351320.html DBGridEh3 -таблица, которую заполняет пользователь DBGridEh2- таблица служебная (пользователь ее не видит) для обработки запросов к БД
ошибка появляется при работе с 1ой процедурой:
ошибка появляется случайно, с одними и теми же входными данными может появится а может и нет. Причем появляется только в этой процедуре. В других процедурах аналогично обращаюсь к FrmMain.ADOCommand.CommandText:=ТЕКСТ Перевод ошибки: "Нарушение прав доступа в msjet40.dll" таблица история: Господа подскажите пожалуйста в чем может быть ошибка! Голову уже сломал над этим вопросом. |
Автор: Norfonzor 25.7.2011, 10:52 |
Добавил схему БД. Может быть проблема в связях? как будто бы ошибка появляется при работе с INSERT |
Автор: 14SatanA88 25.7.2011, 11:02 |
http://www.restoreguard.com/p/file-Msjet40.dll.html попробуй пропатчить саму либу |
Автор: 14SatanA88 25.7.2011, 11:23 | ||
если
то не в связях дело |
Автор: Norfonzor 25.7.2011, 11:34 |
В инете читал что такая ошибка возникает если коряво написан запрос. Может быть ли ошибка изза того что я работаю с "while not (DBGridEh3.DataSource.DataSet.EOF) do" и оттуда обращаюсь к ADOCommand? |
Автор: 14SatanA88 25.7.2011, 11:39 |
я думаю, что генерировалось бы исключение именно по запросу. а у тебя ошибка с либой, которую пользует драйвер JET 4.0 попробуй все-таки пропатчить либу. p.s. если ошибка выпадает на одних и тех же данных не каждый раз, то дело точно не в запросе |
Автор: Norfonzor 25.7.2011, 12:25 |
Ошибка появляется на нескольких ПК. Обновить MDAC и MS Jet 4.0 SP3 не удается тк установлены последние версии |
Автор: 14SatanA88 25.7.2011, 12:26 |
у меня больше нет идей... |
Автор: Norfonzor 25.7.2011, 12:29 |
А какими средствами вы вносите данные в БД INSERT ?? |
Автор: 14SatanA88 25.7.2011, 12:54 |
AdoQuery.SQL - сюда вношу запрос AdoQuery.ExecSQL - выполняю Добавлено через 34 секунды AdoCommand не пользовался. |
Автор: Norfonzor 25.7.2011, 13:34 |
AdoQuery ясно, встречался с ним, слышал что были глюки с INSERT в нем, мне рекомендовали ADOCommand=) сейчас вижу обратное |
Автор: 14SatanA88 25.7.2011, 13:50 |
честно говоря, первый раз слышу) да и ошибка, насколько я знаю, не связана с самим запросом. хотя я могу и ошибаться |
Автор: Norfonzor 25.7.2011, 13:52 | ||
Воспользовался компонентом ADOQuery, пока ошибка не появлялась, для внесения информации достаточно ли этого:
Слышал что кто то перед началом работы пишет ADOQuery2.Active:=False; |
Автор: 14SatanA88 25.7.2011, 14:01 | ||
Ну, это не повлияет в худшую сторону, все что могу сказать. можно ADOQuery2.Close; это то же самое |
Автор: Norfonzor 26.7.2011, 18:51 |
Ошибка не появляется больше, тьфу тьфу тьфу =) Спасибо 14SatanA88 |
Автор: 14SatanA88 26.7.2011, 20:44 |
не за что закрывай тему |
Автор: Norfonzor 28.7.2011, 10:48 | ||
![]()
Может использовать критическую секцию для внесения изменений? http://www.imgup.ru/image-fhox9719209.html |
Автор: 14SatanA88 28.7.2011, 11:42 | ||
http://support.microsoft.com/kb/277711 Добавлено через 2 минуты и 4 секунды
наверное без апдейта никак Добавлено через 6 минут и 45 секунд а как данные физически хранятся? |
Автор: Norfonzor 29.7.2011, 07:37 |
Обновляться не хочет C:\Windows\system32\msjet40.dll установлена версия 4.0.9511.0 Данные хранятся в бд MS Access .mdb Увеличил длину числовых типов данных с "Одинарное с плавающей точкой" до "Двойное с плавающей точкой" А структура схемы такой допускается? http://www.imgup.ru/image-fhux01515194.html |
Автор: 14SatanA88 29.7.2011, 07:57 |
честно говоря, больше идей нет. еще вариант - попробуй имена полей НЕ кириллицей задавать |