TopPicLogo TopPicText

Поле со Списком (ComboBox) - Пополнение справочника с подтверждением

Private Sub cbName_NotInList(NewData As String, Response As Integer)
'Событие - Значения НЕТ в списке
'--------------------------------------------------------------------
Dim rst As Recordset
Dim str As String
Dim v As Variant
Dim lngRecID As Long
On Error GoTo cbName_NotInList_Err

    'Запрашиваем у пользователя разрешение на добавление новых данных с возможностью редакции
    str = InputBox("Подтвердите добавление нового значения" & vbCrLf & _
        "Фамилия", "Новое Значение Списка!", NewData)
    
    If str <> "" Then 'Если пользователь подтвердил ввод нового значения
        v = DMax("Person_ID", "tblPersons")    'MAX значение ключевого поля
        If IsNull(v) Then v = 0                'На случай если запись первая
        lngRecID = CLng(v) + 1                 'Значение ключ. поля новой записи
        
        'Открываем таблицу "tblPersons" и добавляем это значение
        Set rst = CurrentDb.OpenRecordset("tblPersons", dbOpenDynaset)
        With rst
            .AddNew
            'Заполнение полей значениями
            !Person_ID = lngRecID
            !Person_Name = str
            .Update
        End With

        'Сообщаем приложению что данные успешно добавлены
        Response = acDataErrAdded
    Else
        'Пользователь отменил ввод
        Response = acDataErrContinue
    End If


cbName_NotInList_Bye:
    On Error Resume Next
    rst.Close
    Set rst = Nothing
    Exit Sub

cbName_NotInList_Err:
    MsgBox "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _
    "in procedure cbName_NotInList", vbCritical, "Error!"
    Resume cbName_NotInList_Bye
End Sub

Picture

Назад ToTop
L.E. 06.12.2012
Рейтинг@Mail.ru