LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Процесс о...
 RE: Процесс остановлен ядром базы данных Microsoft Jet
 
 15.06.2007 21:04:23
N_A
31 сообщения


RE: Процесс остановлен ядром базы данных Microsoft Jet
>А подобная ошибка возникает при логическом повреждении базы.
Andyru, можно источник или подробности такой инфы, (я склонен верить именно такой версии).
Т.к. у меня таже ошибка, (причем трудновоспроизводимая, но вылезающая в самый неподходящий момент).
В строке:
CurrentDb.Execute "INSERT INTO ..."
Причем добавление записей происходит в 1 таблицу, не используемую в этот момент ни формами ни запросами ни рекордсетами.
Хотя база сетевая и я грешил на проблемы с блокировкой другими пользователями, но потом удалось "подловить" ошибку в момент, когда работал только один пользователь.
Я не новичек, но этот глюк меня начил ставить в тупик.
П.с.
>Невосстановима
- даже импортом?


P.S. Ошибки в базе данных
Автор: N_A от 25.03.2004 10:21:23 Источник ...
 15.06.2007 21:04:23
All
4316 сообщения
1-ый


RE: Процесс остановлен ядром базы данных Microsoft Jet
Так писать нельзя: CurrentDb.Execute. Надо:
Set dbs = CurrentDb и далее dbs.execute


P.S. Ошибки в базе данных
Автор: Admin от 0:00:00 Источник ...
 15.06.2007 21:04:23
All
4316 сообщения
1-ый


RE: Процесс остановлен ядром базы данных Microsoft Jet
Врядли проблема в этом.
Я всегда так пишу, потому что так короче.
Оно работает, и не только у меня.



P.S. Ошибки в базе данных
Автор: N_A от 0:00:00 Источник ...
 15.06.2007 21:04:23
All
4316 сообщения
1-ый


RE: Процесс остановлен ядром базы данных Microsoft Jet
Для Andyru. Не спешите себя считать самым умным. По вопросу видно, что с базой Вы работаете 2 или 3 года. Это еще не очень высокий уровень. Несколько советов для общего развития.
1. Ответ по пользователям. Сколько пользователей работает с базой данных не имеет значения. Важно, как контролируется процесс на изменение данных в базе (посмотрите зачем нужны тракзакции). Если меры не будут приняты, то скоро появиться такая ошибка "Открытие дополнительных баз невозможно". !!! Может возникнуть при работе в одной базе данных одного пользователя.
2. Настройки. Посмотрите в настройках блокировка записей по умолчанию (Режимы. отсутствует, всей записей, изменяемой записи). При этом примитивная установка флажка может и не изменить настройку. Прочтите об этой ошибке Microsoft. Пока я думаю информации достаточно для изучения.

Для N_A. Не пишут так CurrentDb.Execute. Много об этом уже писали. Выделите память для объекта CurrentDb через переменную, лучше глобальную при открытии базы.


P.S. Ошибки в базе данных
Автор: Admin от 0:00:00 Источник ...
 15.06.2007 21:04:23
N_A
31 сообщения


RE: Процесс остановлен ядром базы данных Microsoft Jet
для Admin:
Написал через переменную.
Отдал на тестирование.
Ошибка осталась (как и раньше - 1 раз на несколько десятков прогонов).

Ошибка "3197 Процесс остановлен ядром базы данных Microsoft Jet, так как другой пользователь пытается одновременно изменить те же данные."
Ошибка вылезает в одной и тойже стоке, но не всегда, причем даже когда работает ТОЛЬКО ОДИН пользователь.
Подробности:
Стоматологическая прога.
Главная форма связана с таблицей Рatients_KART (посещение пациента)
(idKart - ключ, ФИО, Дата, ...)
Подчиненная форма связана с таблицей KartSubGrupp
(idKartSubGrupp - счетчик-ключ, ksgKartID - поле связи с главной формой,больше полей нет - таблица для связи Рatients_KART с таблицей KartZub)
3-я таблица KartZub - с формами не связана, добавление в неё записей происходит из СВОБОДНЫХ полей подчинненной формы.
Связи (в схеме данных):
1)(Рatients_KART).idKart(1)-(много)(KartSubGrupp).ksgKartID
2)(KartSubGrupp).idKartSubGrupp(1)-(много)(KartZub).kzKartSubGruppID

Ошибка "Процесс был остановлен... т.к другой пользователь" иногда вылезает в строке db.Execute "INSERT... при вышеуказанном добавлении записей в таблицу KartZub

Код нажатия на кнопку "knAddZub" (кнопка находится в подчиненной форме(таблица KartSubGrupp) )
Private Sub knAddZub_Click()
On Error GoTo knAddZubErr
Dim db As DAO.Database
Set db = CurrentDb()
If Nz(Me.kzZubID, 0) <> 0 Then
If Nz(Me.idKartSubGrupp, 0) = 0 Then 'Проверяем существует ли запись в подчиненной форме (KartSubGrupp) если нет
Me.ksgKartID = Me.Parent.Form!idKart ' то создаем её "вручную" занося в поле связи значения ключа из родительской формы
End If
'If Me.Dirty Then Me.Refresh ' - сохраняем запись в подчинеенной форме(KartSubGrupp), чтобы можно было добавить дочернюю в KartZub
DoCmd.RunCommand acCmdSaveRecord
'Добавляем дочернюю запись в KartZub (сдесь и вылезает ошибка)
db.Execute "INSERT INTO KartZub ( kzKartSubGruppID, kzDia_MKB, kzZubID, kzPoverxnID ) SELECT " _
& Me.idKartSubGrupp & " AS AddkzKartSubGruppID, " _
& IIf(IsNull(Me.kzDia_MKB), "Null", "'" & Me.kzDia_MKB & "'") & " AS AddkzDia_MKB, " _
& Me.kzZubID & " AS AddkzZubID," _
& Nz(Me.kzPoverxnID, "Null") & " AS AddkzPoverxnID;"
Else
MsgBox "Выберите зуб!", vbCritical
End If
Me.kzDia_MKB.SetFocus
Set db = Nothing
Exit Sub
knAddZubErr:
MsgBox Err.Number & "-" & Err.Description
End Sub

Пользователю приходится переоткрывать форму и повторно нажимать кнопку.


P.S. Ошибки в базе данных
Автор: N_A от 26.03.2004 19:22:00 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Процесс о...
ПоискПоиск  Список форумовСписок форумов  
right