本教程将指导您创建级联组合/列表框。 那就是当您有多个组合框/列表框时,其中一个选项的选择确定了另一个中的可用选项。
术语行来源:
从组合框或列表框获取其值的表/查询。 注意:可以使用其他类型的行源,但为简单起见,我们将坚持使用表和查询。控制源:
以绑定形式,它确定控件代表的字段。 这与行源的不同之处在于,行源确定您的选择,控制源确定信息的存储位置。列数:
通过此选项,您可以定义希望能够从控件查看和访问的行源中的数据列数。列宽:
确定表单视图中列的大小。 在多列组合/列表框中,如果您希望继续访问信息,但又不想显示该列,请将宽度设置为零。绑定列:
对于多列组合/列表框,此选项指定进行选择时存储在基础表中的列。更新后事件:
在控件或记录中的已更改数据更新后,将发生此事件。表单模块:
表单模块包含特定于其代表的表单的所有代码。绑定形式:
绑定表格是链接到表/查询的表格,该表格/查询将存储在表格中输入的信息。 注意:并非总是如此,但这是默认设置。 未绑定的表单是未链接的表单,因此一旦关闭表单,输入到表单的信息将不再可用。 概念事件驱动的访问性质:
Access中表单中的所有内容都是事件驱动的。 某些事件,例如单击鼠标或按下键,可用于运行用户定义的宏或事件正常功能之外的代码。 您可以使用的事件取决于对象,即表单,文本框,组合框。 这些可以从对象的属性中查看。访问对象的属性:
对象的属性和功能被组织为层次结构。 以名为Foo的表单上名为Subtotal的文本框的背景色属性为例,该属性属于控件Subtotal,Subtotal属于表单Foo,而Foo属于集合Forms。 要引用该属性,可以使用Forms.Foo.Subtotal.BackColor。 在表单模块中,当您不通过其完整对象路径引用对象时,会做出某些假设。 但是,为清楚起见,我们将不涉及这些假设。 但是,我们将使用Me参考。 关键字Me引用了引发事件的当前形式。 因此,您可以使用Me.Subtotal.BackColor。 假设条件我们将在本教程中使用一个简单的场景。 您有一个带有两个组合框的未绑定表单。 一个命名为[公司],另一个命名为[雇员名称]。 [Company]将从表TblCompany中获取其值,而[Employee Name]将从TblEmployees中获取其值。 这些表具有以下布局:
TblCompany
[ID] – AutoNumber, PK
[CpyName] – Text, Name of the Company TblEmployees
[EmpName] – Text, Name of Employee
[ID] – FK, Used to link the employee to the company from which they work.
[EID] – Autonumber, PK
默认情况下,[公司]将具有以下属性:
行源– TblCompany
列数– 2(我们使用2列,因为我们要同时包含ID和CpyName。)
列宽– 0”; 1”(我们将第一列设置为0”,因为用户不需要查看ID。)
绑定列– 1(我们将其绑定到第一列,以便当我们引用[Company]时,它将返回ID而不是CpyName。)
并且[Employee Name]将没有选择,因为我们希望在选择公司之前将其保留为空。
您的需求将决定如何设置组合/列表框和表格。
程序我们想要的是改变
每当用户将选择更改为[公司]时,[员工名称]的行来源 。因此,在[公司]的更新后事件属性中,您需要将其更改为[事件过程]。
然后,在Visual Basic编辑器的窗体Foo的模块中,您将具有以下代码:
Private Sub Company_AfterUpdate()
With Me![Employee Name]
If IsNull(Me!Company) Then
.RowSource = ""
Else
.RowSource = "SELECT [EmpName] " & _
"FROM TblEmployees " & _
"WHERE [ID]=" & Me!Company
End If
Call .Requery
End With
End Sub
因此,假设用户选择ID为6的CompanyXYZ,则该用户将在[公司]中看到CompanyXYZ,并且[员工姓名]的列表中将填充TblEmployee记录的ID值为6的值。
From: https://bytes.com/topic/access/insights/605958-cascading-combo-list-boxes