首页 文章

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

提问于
浏览
1

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

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

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

亲切的问候 .

3 回答

  • 5

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

    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 & "'"

  • 0

    在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来隐藏第一列数据

  • 1

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

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

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

相关问题