"Could not update; currently locked." - сообщение. Знает кто-нить?

viscan
Дата: 01.09.2005 17:20:58
Уважаемый all, может сталкивался кто-нить с такой проблемой? С некоторых пор, работающая до этого нормально, база стала выдавать сабж при обращении к одной из таблиц. Вся база написана только в Аксессе (MS SQL сервера нет). Состоит из двух частей, таблицы (сетевой ресурс) и формы (у 10-ти пользователей на локальных машинах). Проблемная таблица сейчас содержит порядка 13К записей ... имхо фигня для базы данных ведь ... После выдачи данного сообщения форма открывается с пустыми полями, все остальные формы\таблицы при этом работают нормально. Ну и если закрыть всю базу, подожать некоторое время (10-20 минут), то все снова работает. Кто-нить знает в чем может быть дело, куда бежать и где искать? .... спасибо ...
Владимир Саныч
Дата: 01.09.2005 17:24:53
Дык, два юзера лезут править одну таблицу (а в ней соседние записи) одновременно. Вот и лятять...
viscan
Дата: 01.09.2005 17:34:27
хм .. а разве это не задача базы данных (читай Аксесс) это разруливать?
Владимир Саныч
Дата: 01.09.2005 17:42:13
Если написать правильный код с обработкой, то разрулит...
viscan
Дата: 01.09.2005 17:55:02
А что, что нужно дописать то!? Вот код связанный с открытием формы ... что нужно добавить?

Private Sub PhoneCallBtn_Click()
Dim MainQuery As String
On Error GoTo Err_PhoneCallBtn_Click

If SwitchActivity Then
'MsgBox ("Switch Activity")
End If

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "FPhoneCall"

DoCmd.OpenForm stDocName, , , stLinkCriteria

Forms(stDocName).StartTime.SetFocus
Forms(stDocName).StartTime.Text = Time
Forms(stDocName).Date.SetFocus
Forms(stDocName).Date.Text = Date
CurrentDate = Date
Forms(stDocName).Combo30.SetFocus
Forms(stDocName).Combo30.ListIndex = 0
Forms(stDocName).Combo36.SetFocus
Forms(stDocName).Combo36.ListIndex = 0
Forms(stDocName).Combo34.SetFocus
Forms(stDocName).Combo34.ListIndex = 0

Forms(stDocName).ProductQnt.SetFocus
Forms(stDocName).ProductQnt.Value = 1
Forms(stDocName).Combo30.SetFocus
Forms(stDocName).Text44.Value = UserID

sfName = "SFPrevCall"
DoCmd.Requery sfName

Exit_PhoneCallBtn_Click:
Exit Sub

Err_PhoneCallBtn_Click:
MsgBox Err.Description
Resume Exit_PhoneCallBtn_Click

End Sub
Владимир Саныч
Дата: 01.09.2005 18:13:12
Примерно так:

on error goto e
f:
dbengine(0).begintrans

(тут весь существующий код)

dbengine(0).committrans
exit sub
e:
dbengine(0).rollback
dbengine.idle dbfreelocks
resume f
viscan
Дата: 01.09.2005 18:47:12
а правильно ли я понял причину проблемы? пользователь1 открывая форму добавляет запись в таблицу (это грубо говоря action query "append" или что-нить в этом роде), при этом в саб-форме в этом же окне должны отобразиться все раннее введенные им записи, соответственно запускается запрос Select по этой же таблице, на 13К записей он длится какое-то время ...если в этот момент Пользователь2 тоже пытается добавить новую запись в эту же таблицу, то он получает отказ в виде сабжа... а раньше видимо все это работало благодаря меньшему числу пользователей и меньшему числу записей в таблице... так? за код огромное спасибо! допишу, буду тестить...
Владимир Саныч
Дата: 01.09.2005 18:52:31
Насколько я понимаю, проблема вот в этом:

Forms(stDocName).ProductQnt.Value = 1
Forms(stDocName).Text44.Value = UserID

Как только форма открывается, она сразу оказывается в режиме редактирования. Кстати, если в этот момент юзер пошел в туалет или ему позвонили по телефону, то остальные юзеры будут продолжать лететь, пока он не вернется.
viscan
Дата: 01.09.2005 19:05:21
не-ет ... точно не в этом, несколько человек (проверял на трех минимум) спокойно могут добавлять записи одновременно ... независимо от того сколько времени у каждого из них это займет ... кстати сейчас вот провели эксперимент ... втроем одновременно открывали форму, все прошло без сбоев (это еще до внесения изменений в код), хотя скорее всего просто сейчас сервак шуршит намного свободней и быстрее (рабочий день давно ёк) поэтому никаких коллизий и не происходит, а днем при забитом кеше все тормозит ...
Владимир Саныч
Дата: 01.09.2005 19:18:02
А. То есть форма открывается на новой записи. Понял. Тогда мое последнее замечание отменяется.