|
|
|
| Исходные данные:
(версия: ACCESS - 2003 SP1)
Есть две формы: "фрм_Договор" (режим форма) и "фрм_Договора" (реж. табл.)
Переход по записям форм - происходит синхронно с пом. кода (приведу ниже)
При внесении изменений в форму "фрм_Договор" и переходе на след. запись в этой же форме - все работает.
При внесении изменений в форму "фрм_Договор" и переходе на след. запись с помощью второй формы, "фрм_Договора" - происходит сбой.
Выдается сообщение:
Run-time error '-2147352567 (80020009)': Upate или CancelUpdate без AddNew или Edit
Ошибка фиксируется в модуле формы "фрм_Договор", в событии Form_BeforeUpdate.
Идея была такая:
При выборе в "фрм_Договора" любой записи, происходит переход на ту же запись в "фрм_Договор". Если активная до этого запись была изменена, то предварительно в форме "фрм_Договор" происходит событие Form_BeforeUpdate, при котором кое-какие поля в "фрм_Договор" меняются (время сохранения записи, например). Но это изменение некоторых полей и приводит к возникновению указанной выше ошибки
Код синхронизации:
Sub procСинхронизация(ИмяФормы As String, _
ИскомыйКод As Long, _
ИмяПоляГдеИскатьКод As String)
Dim frm As Form
On Error Resume Next
Set frm = Forms(ИмяФормы)
If Err.Number = 0 Then
With frm.RecordsetClone
.FindFirst ИмяПоляГдеИскатьКод & "=" & ИскомыйКод
If .NoMatch = False Then
frm.Bookmark = .Bookmark
End If
End With
Else
' MsgBox "Ошибка №" & Err.Number & vbCrLf _
' & Err.Description
Err.Clear
End If
Set frm = Nothing
End Sub | |
|
|