Поле со списком одновременно на поиск и создание

Sergei_fknjdsdf
Дата: 14.11.2009 23:33:37
Всем привет! Помогите пожалуйста решить следующую проблему:

В форме ввода данных о сотрудниках создал поле со списком, которое ищет запись.
Причем при наборе фамилии происходит автоподстановка, если такая фамилия существует.
Как сделать, чтобы при вводе фамилии в случае если такая запись отсутствует, при нажатии клавиши "Ввод" появлялось сообщение типа "такого сотрудника нет. Добавить?" и кнопки Да/нет. При нажатии Да создавалась бы новая запись, с введенной новой фамилией? Если же такая фамилия уже есть то производился бы переход на эту запись (как оно сейчас и работает).
mds_world
Дата: 14.11.2009 23:38:44
Sergei_fknjdsdf,

смотрите хелп и поиск по форуму на событие NotInList поля со списком
Sergei_fknjdsdf
Дата: 19.11.2009 17:53:30
mds_world,
нашел то, что мне нужно под темой "Ввод данных с формы в связанные таблицы с помощью поля со списком." Правда кое-что пришлось уточнить.
Sergei_fknjdsdf
Дата: 19.11.2009 17:57:26
Sergei_fknjdsdf
mds_world,
нашел то, что мне нужно под темой "Ввод данных с формы в связанные таблицы с помощью поля со списком." Правда кое-что пришлось уточнить.


Вот что получилось:
©Felix
Дата: 19.11.2009 19:24:12
Private Sub psTown_NotInList(NewData As String, Response As Integer)
If (MsgBox("Добавить новой город?", vbYesNo + vbDefaultButton2 + vbQuestion, "Вопрос") = vbYes) Then
  
  Dim strSQL As String
  strSQL = "INSERT INTO sp_town (town) VALUES ('" & NewData & "')"
  CurrentDb.Execute strSQL
  Response = acDataErrAdded
End If
End Sub
_______________
FelixКартинка с другого сайта.
Sergei_fknjdsdf
Дата: 09.07.2010 20:46:17
Все виденные мною способы обработки события NotInList делают примерно одно и то-же: создают новую запись, после чего пытаются обновить форму (Response = acDataErrAdded), но в случае если в форме присутствуют обязательные для ввода поля, возникает ошибка, т.к. они не заполнены. Я сделал процедуру обработки по другому:

Private Sub ПолеСоСписком1_NotInList(NewData As String, Response As Integer)
Dim strMsg As String

strMsg = "Значение '" & NewData & "' отсутствует в списке. Добавить?"
If vbNo = MsgBox(strMsg, vbYesNo + vbQuestion, _
"Новый работник") Then
Response = acDataErrDisplay
Else
ПолеСоСписком1.Value = Null
DoCmd.GoToRecord , , acNewRec
Фамилия.Value = NewData
Фамилия.SetFocus
Response = acDataErrContinue
End If
End Sub

Она работает именно как мне надо. Что скажут профессионалы?