![]() |
Как заставить Access обновить поле?!!
У меня на форме ПолеСоСписком у него источник строк - таблица.
Стоит свойство ограничится списком = истина. На событие, которое возникает, когда не в списке я спрашиваю и добавляю элемент в таблицу. Но как мне заставить обновится это поле со списком, чтобы он заново считал эти поля? |
Access'ом никто не занимается? Плз, хелп!
|
<fieldname>.requery()
|
Я так и написал, но когда пускаю, то получаю окно
Run-time error '2118': Необходимо сохранить текущее поле перед выполнением макрокоманды обновление. Вот текст процедуры: Private Sub ФакулИлиПредпр_NotInList(NewData As String, Response As Integer) Dim SQL$ Response = MsgBox("Такой кафедры нет в списке, добавить?", vbYesNo) If Response = vbYes Then DoCmd.SetWarnings False SQL = "INSERT INTO Кафедры (Название) Values('" & NewData & "')" DoCmd.RunSQL SQL Me.ФакулИлиПредпр.Requery Me.ФакулИлиПредпр.Text = NewData DoCmd.SetWarnings True End If End Sub |
не помню, давно access не занимался. Ты хочешь добавить в таблицу новое значение когда в комбо юзер ввел новое значение? Помню что надо писать код и _NotInList и в _afterupdate. там есть какие-то игры с undo, requery вроде надо писать в _afterupdate
|
Всем спасибо, проблему решил сам. Для последующих поколений публикую решение проблемы.
Нужно в процедуре, после добавления элемента в таблицу глобалной переменной Response присвоить значение acDataErrAdded. А если юзверь отказался от внесения данных, то acDataErrContinue. В хелпе, к сожалению вообще на эту тему ничего не написано. Вот универсальная процедура, может кому надо. ______________________________________________________________ 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(1) = 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 & " в функции AppendLookupTable", vbInformation Resume m2 End Function |
| Часовой пояс GMT +4, время: 17:00. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.