2012-07-04 4 views
0

У меня есть таблица событий, которая записывает несколько событий для каждого человека. Я добавил поле event_number, чтобы пользователь мог идентифицировать порядок событий для каждого человека и перемещаться между ними. Добавлена ​​кнопка «Новое событие» со следующим кодом, который находит последний номер события для человека и вставляет новую строку в таблицу с некоторыми базовыми данными, такими как их идентификатор и следующий номер доступного события. Это работает нормально, но мне нужно сделать это, чтобы переместить суб-форму события так, чтобы этот новый номер события отображался в форме, чтобы можно было добавить остальные данные. Пробовал различные варианты вокруг DoCmd.GoToRecord, но может отображать только пустую подформу, а не показывать только что введенный номер события. Есть идеи?Access 2007 VBA GoToRecord issue

Private Sub btnNewEvent_Click() 
    'add a new event by setting discriminator and event number 
    Dim lngLast As Long 
    Dim strQuery As String 
    lngLast = DMax("[event_number]", "event", "[PersonID] = [Forms]![frmContainer]![txPersonID]") 
    lngLast = lngLast + 1 
    strQuery = "INSERT INTO event (ID, event_discriminator, event_number) " & _ 
      "VALUES ([Forms]![frmContainer]![txtPersonID], 'NR', " & lngLast & ")" 
    DoCmd.RunSQL (strQuery) 
End Sub 

ответ

0

Это зависит от того, является ли подчиненная форма непрерывной или единой формы и как работает ваше приложение. Это может быть достаточно, чтобы повторный запрос на подчиненной, а затем найти соответствующую запись:

''Running from the main form 
Me.MySubformcontrolName.Form.Requery 

Me.MySubformcontrolName.SetFocus 
With Me.MySubformcontrolName.Form.Recordset 
    .FindFirst "ID=" & lngLast 
End With 

Или

''From the subform: 
Me.Requery 

With Me.Recordset 
    .FindFirst "ID=" & lngLast 
    ''Other stuff 
End With 

может удовлетворить просто сбросить источник подчиненной записи в строку SQL, которая включает в себя только самые последние запись.

Обратите внимание, что способ, которым вы выбрали новый номер, небезопасен ни в чем, кроме единой пользовательской среды.

+0

Есть ли лучший способ установить следующий номер события? В таблице в настоящее время имеется Autonumber в качестве первичного ключа event_ID. Необходимо иметь возможность записывать около 50 событий для каждого человека, всего 2400 человек. Только один пользователь будет отвечать за запись конкретного человека. – Chelle

+0

Одиночная форма, основанная на таблице событий в виде набора записей, но содержащая несколько подформ, каждая для отдельной таблицы с event_ID как внешний ключ и связывание с главной/дочерней ссылкой. – Chelle

+0

Номер события - следующий порядковый номер на человека, верно? Требуется ли последовательное число? – Fionnuala

Смежные вопросы