ник: Санька
Просто, та процедура, о которой я говорю (которую мне некогда написали) делала все намного проще)) и все делалось в одном и том же поле со списком - и поиск и добавление. Нужно было после появления сообщения "Значение отсутствует в списке. Добавить?" нажать кнопку "ОК" и все. Не нужно было делать лишних действий - искать, переходить на последнюю запись в форме и т.д. Все делалось автоматически и предельно просто))
Неужели никто не знает, как ее написать? Или просто нет времени заниматься такими "пустяками"?
Вот нашел в инете нечто похожее:
Private Sub cbo"Name"_NotInList(NewData As String, Response as Integer)
Dim strMsg As String
Dim rst As DAO.Recordset
Dim db As DAO.Database
strMsg = "'" & NewData & "' is not in the list. "
strMsg = strMsg & "Would you like to add it?"
If vbNo = MsgBox(strMsg, vbYesNo + vbQuestion,"New Company") Then
Response = acDataErrDisplay
Else
Set db = CurrentDb()
set rst = db.OpenRecordset(tbl"Name")
rst.AddNew
rst("Company") = NewData
rst.update
Response = acDataErrAdded
rst.Close
End If
End Sub
Я ее приспособил и она работает, только не обновляет форму после добавления значения в таблицу. Приходится закрывать и открывать заново.
И еще проблема в том, что она выполняет поиск только по одному значению (только по значению поля со списком) и добавляет значение только этого поля со списком.
Наверное здесь еще нужно использовать RecordsetClone (насколько я понимаю, эта штуковина позволяет создать "виртуальный" источник записей или что-то вроде того, который может провести поиск по всем полям записи и добавить в источник строк (в таблицу) значения всех трех полей). Но с этим я еще не разобрался...
Только, насколько я понимаю, эта процедура написана для добавления нового значения в одно поле. А та, о которой я говорю, искала запись по трем полям и добавляла во все три поля.