根据您所说的,我什至无法猜测到底发生了什么,但我可以告诉您如何获得您正在搜索的结果。
1) 建立一个新的表格。称之为 subfrmPassingYear。对于表单的 RecordSource,将其设置为学生信息所在的表的名称。为了我们的目的,我将把它称为 tblStudents。
2) 在此表单的默认视图属性中,您需要将其更改为连续表单或数据表。它将默认为 Single Form,这是一个不好的选择。
3) 设置另一个新表格。称之为frmPassingYear。
4) 向 frmPassingYear 添加一个新的子表单。它是一个对象,应该与文本框、标签、组合和所有其他对象在同一个工具箱中。它应该会自动启动向导,您将选择“现有表单”并从列表中选择 subfrmPassingYear。如果向导没有启动,只需将子窗体的 Source Object 属性设置为 subfrmPassingYear。
5) 向 frmPassingYear 添加一个新组合。称之为 cboPassingYear。作为其 RecordSource,将其设置为“SELECT DISTINCT [Passing Year] FROM tblStudents ORDER BY [Passing Year] ASC”。
6) 在 cboPassingYear 的 AfterUpdate 事件中,放入以下语句:
Dim sSQL as String
sSQL = "SELECT * FROM tblStudents WHERE [Passing Year] = " & Trim(Me!cboPassingYear.Text) & ""
Forms!frmPassingYear.subfrmPassingYear.Form.RecordSource = sSQL
运行 frmPassingYear,从组合中选择过去的年份,子窗体应仅填充该年份的记录。如果您的年份存储为 TEXT 而不是 INTEGER,则需要在 SQL 字符串中添加单引号。