NotInList: Додавання значення в довідкову таблицю

При розробці баз даних досить часто використовуються довідкові таблиці для підстановки набору значень. У разі якщо ця таблиця має одне поле для додавання нового значення через подію NotInList списку можна використовувати дану функцію.

Виконайте наступні кроки:





1. Помістіть функцію в доступний модуль.
 





2. В властивість списку Row Source помістити SQL запит на отримання даних з необхідної таблиці
 





3. Виставте значення властивості списку LimitToList в Yes  
 





4. В обробці події NotInList помістіть Response = AppendLookupTable (Me! [MyCombo], NewData)
 





   





   
 





   
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(0) = 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, vbInformation, “у функції AppendLookupTable”
Resume m2
End Function

Видалення даних зі списку

Public Function DeleteLookupTable(cbo As ComboBox, Optional blnMsg As Boolean = True)
Dim rst As DAO.Recordset
Dim Response As Long
On Error GoTo m1

If Not (IsNull(cbo)) Then
    If blnMsg Then
Response = MsgBox (“Видалити значення [” & cbo & “] зі списку?” & VbCrLf & “Для видалення натисніть ОК.”, VbOKCancel + vbQuestion, “Видалення значення”)
    Else
        Response = 1
    End If
    Select Case Response
      Case 1
        Set rst = CurrentDb.OpenRecordset(cbo.RowSource, dbOpenDynaset)
        rst.FindFirst rst(0).Name & “=”” & cbo & “””
        rst.Delete
        rst.Close
        cbo = Null
        cbo.Requery
      Case 2
        Exit Function
    End Select
End If
m2:
Set rst = Nothing
Exit Function
m1:
MsgBox “Помилка” & Err.Number & “:” & Err.Description, vbInformation, “у функції DeleteLookupTable”
Resume m2
End Function

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*