|
Всем спасибо, проблему решил сам. Для последующих поколений публикую решение проблемы.
Нужно в процедуре, после добавления элемента в таблицу глобалной переменной Response присвоить значение acDataErrAdded.
А если юзверь отказался от внесения данных, то acDataErrContinue.
В хелпе, к сожалению вообще на эту тему ничего не написано.
Вот универсальная процедура, может кому надо.
______________________________________________________________
Public Function AppendLookupTable(cbo As ComboBox, NewData As Variant, Optional blnMsg As Boolean = True) As Integer
Dim rst As DAO.Recordset
Dim Response As Long
On Error GoTo m1
AppendLookupTable = acDataErrContinue
If Not (IsNull(NewData)) Then
If blnMsg Then
Response = MsgBox("Значение '" & NewData & "' отсутствует в списке." & vbCrLf & "Для добавления нажмите ОК.", vbOKCancel + vbQuestion, "Добавление значения")
Else
Response = 1
End If
Select Case Response
Case 1
Set rst = CurrentDb.OpenRecordset(cbo.RowSource)
rst.AddNew
rst(1) = NewData
rst.Update
rst.Close
AppendLookupTable = acDataErrAdded
Case 2
Exit Function
End Select
End If
m2:
Set rst = Nothing
Exit Function
m1:
MsgBox "Ошибка " & Err.Number & ": " & Err.Description & " в функции AppendLookupTable", vbInformation
Resume m2
End Function
|