Фильтрация данных в форме приводит к тому, что поле со списком не работает - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть форма, которая отображает записи учеников.

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

Наконец, у меня есть две кнопки для фильтрации.Один отфильтровывает всех учеников, другой - только активных учеников.

Два вопроса, которые я считаю, связаны.

Один, когда форма загружает cbo, НЕ работает.

Два, если я выбираю кнопку «Все студенты», cbo работает.Когда я выбираю кнопку «Активные студенты», cbo больше не работает.

Источник записи формы:

Select tblStudents.*

Загрузка формы:

Private Sub cmdStudent_Click()
On Error GoTo cmdStudent_Click_Err

DoCmd.OpenForm "frmStudents", acNormal, "", "[Last3]=" & "'" & "Sanders 
862" & "'", , acNormal

cmdStudent_Click_Exit:
Exit Sub

cmdStudent_Click_Err:
MsgBox Error$
Resume cmdStudent_Click_Exit

End Sub

Код ComboBox:

Private Sub cboFindRecord_AfterUpdate()

' Find the record that matches the control.
Dim rs As Recordset

Set rs = Me.RecordsetClone
rs.FindFirst "[SN] = '" & Me![cboFindRecord] & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Кнопка «Все учащиеся»:

Private Sub cmdAllStudents_Click()

cmdAllStudents.ForeColor = 16777215
cmdAllStudents.BackColor = 16711680
cmdAllStudents.FontBold = True

cmdActiveStudents.ForeColor = 0
cmdActiveStudents.BackColor = 16777215
cmdActiveStudents.FontBold = False

Me.FilterOn = False

cboFindRecord.RowSourceType = "Table/Query"
cboFindRecord.RowSource = "SELECT tblStudents.SN, tblStudents.Last3 FROM 
tblStudents ORDER BY tblStudents.Last3;"
cboFindRecord.Requery
Call cboFindRecord_AfterUpdate
cboFindRecord.SetFocus

End Sub

Кнопка «Активный студент»:

Private Sub cmdActiveStudents_Click()

cmdActiveStudents.ForeColor = 16777215
cmdActiveStudents.BackColor = 16711680
cmdActiveStudents.FontBold = True

cmdAllStudents.ForeColor = 0
cmdAllStudents.BackColor = 16777215
cmdAllStudents.FontBold = False

Me.FilterOn = True

cboFindRecord.RowSourceType = "Table/Query"
cboFindRecord.RowSource = "SELECT tblStudents.SN, tblStudents.Last3, 
tblStudents.Status_ID FROM tblStudents WHERE (((tblStudents.Status_ID) Not 
In (6,7))) ORDER BY tblStudents.Last3;"
cboFindRecord.Requery
Call cboFindRecord_AfterUpdate
cboFindRecord.SetFocus

End Sub

Спасибо за любую помощь.

Я пыталсяизменение набора записей для соответствия всем или активным учащимся без изменений.

1 Ответ

0 голосов
/ 26 апреля 2019

ОК, не уверен, почему это происходит, но я исправил свою проблему. Проблема с кодом загрузки формы.

Когда я загружал студента из другой формы, он по умолчанию загружал нашего тестового студента. Моя теория заключается в том, что это меняло рекорд. Буду признателен за объяснение, если кто-то знает.

Я убрал принудительную запись студента при загрузке формы студента и поместил код в событие On Load для формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...