我有一个Microsoft Access数据库 . 它有一个客户表和每个客户的进入日期 . 我还有一个表格,其中包括所有客户及其信息 .
我想制作一个组合框(下拉框),其中包括一年中的几个月(1月,2月,3月,4月等) . 当用户从组合框中选择April时,只有那个月添加的记录才会显示在记录表中 .
可以这样做吗?我一直试图这样做至少3天但没有运气..
亲切的问候 .
实质上,您需要一个下拉字段,该字段应用过滤器功能按月过滤相应的记录 . 根据您是否使用子表单执行以下操作 .
Main Form (no subform) - Use ApplyFilter
使用所有12个月的输入值列表选择或使用Months表中的数据(使用隐藏或未隐藏的月份编号)创建一个组合框 .
使用命令ApplyFilter为AfterUpdate或OnClick按钮事件创建宏或VBA例程 .
宏: ApplyFilter FilterName: (leave blank), Where Condition: ="=[Record Month Field]='" & Forms!MainForm!FilterMonthCombo & "'", Control Name: (leave blank)
ApplyFilter FilterName: (leave blank), Where Condition: ="=[Record Month Field]='" & Forms!MainForm!FilterMonthCombo & "'", Control Name: (leave blank)
VBA: DoCmd.ApplyFilter , "[Record Month Field]='" & Me.FilterMonthCombo & "'"
DoCmd.ApplyFilter , "[Record Month Field]='" & Me.FilterMonthCombo & "'"
Main Form (with subform) - Use RecordSource
为AfterUpdate或OnClick按钮事件创建VBA例程,以动态过滤子窗体的RecordSource:
VBA: Forms!MainForm!Subform.Form.RecordSource = "SELECT * FROM Records WHERE [Record Month Field]='" & Forms!MainForm!FilterMonthCombo & "'"
Forms!MainForm!Subform.Form.RecordSource = "SELECT * FROM Records WHERE [Record Month Field]='" & Forms!MainForm!FilterMonthCombo & "'"
在MS Access中,对我来说就像一件简单的事情 . 如果您对VBA感到满意,可以在组合框的“AFTER UPDATE”事件上编写一个过程 . 此过程应该只是将FROM的RecordSource更新为
"SELECT * FROM [the table with the records you want to filter] WHERE [Field with month number] = " & ComboxboxField.Column(0)
将您的组合框设置为有两列,一列包含月份编号,另一列包含月份名称 . 格式化组合框时,选择通过将其大小设置为0来隐藏第一列数据
您需要执行几个步骤,首先进入组合框的属性并更改行源,使其具有第一列中的月份编号和第二列中的月份名称 . 你需要为此制作一张 table . 接下来,进入组合框的属性并将列计数更改为2.然后更改列宽,使第一列为0.它应该看起来像这样 - 0“; 2” . 现在组合框应该在下拉列表中列出月份名称,但是如果以编程方式访问它,它将为您提供月份的编号 .
这应该让你开始,从那里取决于你如何获得数据,你需要一个使用Month()来分离它的查询,或者如果你使用子表单,你需要一个月份的字段来链接离开 .
希望如果不是太晚,这会有所帮助 .
3 回答
实质上,您需要一个下拉字段,该字段应用过滤器功能按月过滤相应的记录 . 根据您是否使用子表单执行以下操作 .
Main Form (no subform) - Use ApplyFilter
使用所有12个月的输入值列表选择或使用Months表中的数据(使用隐藏或未隐藏的月份编号)创建一个组合框 .
使用命令ApplyFilter为AfterUpdate或OnClick按钮事件创建宏或VBA例程 .
宏:
ApplyFilter FilterName: (leave blank), Where Condition: ="=[Record Month Field]='" & Forms!MainForm!FilterMonthCombo & "'", Control Name: (leave blank)
VBA:
DoCmd.ApplyFilter , "[Record Month Field]='" & Me.FilterMonthCombo & "'"
Main Form (with subform) - Use RecordSource
使用所有12个月的输入值列表选择或使用Months表中的数据(使用隐藏或未隐藏的月份编号)创建一个组合框 .
为AfterUpdate或OnClick按钮事件创建VBA例程,以动态过滤子窗体的RecordSource:
VBA:
Forms!MainForm!Subform.Form.RecordSource = "SELECT * FROM Records WHERE [Record Month Field]='" & Forms!MainForm!FilterMonthCombo & "'"
在MS Access中,对我来说就像一件简单的事情 . 如果您对VBA感到满意,可以在组合框的“AFTER UPDATE”事件上编写一个过程 . 此过程应该只是将FROM的RecordSource更新为
将您的组合框设置为有两列,一列包含月份编号,另一列包含月份名称 . 格式化组合框时,选择通过将其大小设置为0来隐藏第一列数据
您需要执行几个步骤,首先进入组合框的属性并更改行源,使其具有第一列中的月份编号和第二列中的月份名称 . 你需要为此制作一张 table . 接下来,进入组合框的属性并将列计数更改为2.然后更改列宽,使第一列为0.它应该看起来像这样 - 0“; 2” . 现在组合框应该在下拉列表中列出月份名称,但是如果以编程方式访问它,它将为您提供月份的编号 .
这应该让你开始,从那里取决于你如何获得数据,你需要一个使用Month()来分离它的查询,或者如果你使用子表单,你需要一个月份的字段来链接离开 .
希望如果不是太晚,这会有所帮助 .