imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 06.06.2004, 01:13     # 1
Dragon31337
Advanced Member
 
Аватар для Dragon31337
 
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490

Dragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царстве
Как заставить Access обновить поле?!!

У меня на форме ПолеСоСписком у него источник строк - таблица.
Стоит свойство ограничится списком = истина.
На событие, которое возникает, когда не в списке я спрашиваю и добавляю элемент в таблицу.
Но как мне заставить обновится это поле со списком, чтобы он заново считал эти поля?
Dragon31337 вне форума  
Старый 06.06.2004, 12:33     # 2
Dragon31337
Advanced Member
 
Аватар для Dragon31337
 
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490

Dragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царстве
Access'ом никто не занимается? Плз, хелп!
Dragon31337 вне форума  
Старый 06.06.2004, 13:06     # 3
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
<fieldname>.requery()
Drakosha вне форума  
Старый 06.06.2004, 15:23     # 4
Dragon31337
Advanced Member
 
Аватар для Dragon31337
 
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490

Dragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царстве
Я так и написал, но когда пускаю, то получаю окно
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
Dragon31337 вне форума  
Старый 06.06.2004, 20:57     # 5
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
не помню, давно access не занимался. Ты хочешь добавить в таблицу новое значение когда в комбо юзер ввел новое значение? Помню что надо писать код и _NotInList и в _afterupdate. там есть какие-то игры с undo, requery вроде надо писать в _afterupdate
Drakosha вне форума  
Старый 07.06.2004, 10:07     # 6
Dragon31337
Advanced Member
 
Аватар для Dragon31337
 
Регистрация: 21.11.2003
Адрес: Столица
Сообщения: 490

Dragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царствеDragon31337 Луч света в тёмном царстве
Всем спасибо, проблему решил сам. Для последующих поколений публикую решение проблемы.
Нужно в процедуре, после добавления элемента в таблицу глобалной переменной 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
Dragon31337 вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:22.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.