基于组合框预定义值过滤微软访问记录

时间:2013-10-05 16:25:04

标签: ms-access

我有一个Microsoft Access数据库。它有一个客户表和每个客户的进入日期。我还有一个表格,其中包括所有客户及其信息。

我想制作一个组合框(下拉框),其中包括一年中的几个月(1月,2月,3月,4月等)。当用户从组合框中选择April时,只有那个月添加的记录将显示在记录表中。

可以这样做吗?我一直试图这样做至少3天但没有运气..

亲切的问候。

3 个答案:

答案 0 :(得分:5)

基本上,您需要一个下拉字段,该字段应用过滤器功能来按月过滤相应的记录。根据您是否使用子表单,执行以下操作。

主要表格(无子表格) - 使用ApplyFilter

  1. 使用所有12个月的输入值列表选择或使用Months表中的数据(使用隐藏或未隐藏的月份编号)创建一个组合框。
  2. 使用命令ApplyFilter为AfterUpdate或OnClick按钮事件创建宏或VBA例程。
  3. 宏:ApplyFilter FilterName: (leave blank), Where Condition: ="=[Record Month Field]='" & Forms!MainForm!FilterMonthCombo & "'", Control Name: (leave blank)

    VBA:DoCmd.ApplyFilter , "[Record Month Field]='" & Me.FilterMonthCombo & "'"

    主窗体(带子窗体) - 使用RecordSource

    1. 使用所有12个月的输入值列表选择或使用Months表中的数据(使用隐藏或未隐藏的月份编号)创建一个组合框。
    2. 为AfterUpdate或OnClick按钮事件创建VBA例程,以动态过滤子窗体的RecordSource:
    3. VBA:Forms!MainForm!Subform.Form.RecordSource = "SELECT * FROM Records WHERE [Record Month Field]='" & Forms!MainForm!FilterMonthCombo & "'"

答案 1 :(得分:1)

在MS Access中,我觉得这很简单。 如果您对VBA感到满意,可以编写程序 “更新后”组合框的事件。 此过程应该只是将FROM的RecordSource更新为

"SELECT * FROM [the table with the records you want to filter] WHERE [Field with month number] = " & ComboxboxField.Column(0)

将您的组合框设置为两列,一列包含月份编号,另一列包含月份名称。 格式化组合框时,选择通过将其大小设置为0“

来隐藏第一列数据

答案 2 :(得分:0)

您需要执行几个步骤,首先进入组合框的属性并更改行源,使其具有第一列中的月份编号和第二列中的月份名称。你需要为此制作一张桌子。接下来,进入组合框的属性并将列计数更改为2.然后更改列宽,使第一列为0.它应该看起来像这样 - 0“; 2”。现在组合框应该在下拉列表中列出月份名称,但是如果以编程方式访问它,它将为您提供月份的编号。

这应该让你开始,从那里取决于你如何获得数据,你需要一个使用Month()来分离它的查询,或者如果你使用子表单,你需要一个月的字段在那里链接。

希望如果不是太晚,这会有所帮助。