Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > столбец подстановок


Автор: Свят86 29.12.2008, 20:33
в таблице используется столбец подстановок из другой таблицы, можно ли установить связь, чтоб была возможность ввода в таблице значений отличных от находящихся в таблице подстановок так, чтоб эти значения в нее добавлялись???
если нельзя сделать это путем создания стандартных связей, то подскажите пожалуйста какой-нибудь макрос или программный код, который это сделает!!! заранее спасибо!!!

Автор: bopoha 29.12.2008, 21:02
Свят86, необходимо обработать событие поля со списком NoInList (Отсутствует в списке). Т.е. добавить значение в таблицу. Если очень нужен пример, маякните на почту/ICQ (см. профиль), то вышлю.

Автор: bopoha 1.1.2009, 03:39
Код

Public Function AddToSpr(strTabl As String, strField As String, NewData As Variant) As Integer
' Добавляет в справочник значение, используется на формах для полей со списом.
' Вызывать на событие NotInList (отсутствует в списке)
' Вход:
'       strTabl     - имя таблицы
'       strField    - имя поля
'       NewData     - новое значение
' Выход: возвращает значение для параметра события - Response
    If MsgBox("Введённое значение '" & NewData & "' отсутствует в справочнике, добавить справочник?", vbYesNo + vbQuestion, "Вопрос") = vbYes Then
        AddToSpr = acDataErrAdded
        If VarType(NewData) <> vbString Then
            CurrentDb.Execute "INSERT INTO " & strTabl & " (" & strField & ") Values (" & NewData & ");"
        Else
            CurrentDb.Execute "INSERT INTO " & strTabl & " (" & strField & ") Values ('" & Trim(NewData) & "');"
        End If
    End If

End Function


Пример использования:
Код

Private Sub K_DOK_OSN_NotInList(NewData As String, Response As Integer)
    Response = AddToSpr("s_dok_osn", "T_DOK_OSN", NewData)
End Sub

Автор: Свят86 12.1.2009, 10:26
спасибо за помощь, только вот возникло еще пару вопросов:
1) работаю в 2007 ACCESS чтобы добавил значение нужно нажать кнопочку обновить все, что и куда вписать чтоб делалось автоматом?
2)после нажатия кнопочки обновить все значение добавляется в список, но проподает в поле, тоесть его нужно вводить заново! как этого избежать?

Автор: Akina 12.1.2009, 10:45
Цитата(Свят86 @  12.1.2009,  11:26 Найти цитируемый пост)
что и куда вписать чтоб делалось автоматом?

Refresh/Requery

Цитата(Свят86 @  12.1.2009,  11:26 Найти цитируемый пост)
как этого избежать?

Запомнить и потом восстановить

Автор: Свят86 12.1.2009, 11:20
я понимаю что если шаришь в программирование под Access, то сложностей вобще никаких!!! но когда не особо догоняешь к чему писать рефрешь и потыкавшись в справке так ничего и не получилось, то эти два слова фиг знает куда ставить!!! к тому же ведь обновляться должны какие-то объекты!!! подскажите плиз подробнее!!!

Автор: bopoha 12.1.2009, 11:54
Свят86, оба вопросы мне не понятны. Вы про ту же самую проблемму спрашиваете - добавление нового значения в поле со списком?

Автор: Akina 12.1.2009, 11:54
Цитата(Свят86 @  12.1.2009,  12:20 Найти цитируемый пост)
обновляться должны какие-то объекты

Форма и/или её источник данных

Автор: bopoha 12.1.2009, 12:35
Во вложениях пример реализации. По просьбе Свят86.

P.S. После загрузки файла, расширение .jpg удалить. Что-то не разрешило мне zip загрузить :-(.

Автор: Свят86 12.1.2009, 12:53
все работает!!! спасибо!!! smile)))))))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)