【问题标题】:ComboBox that hides records based on criteria根据条件隐藏记录的组合框
【发布时间】:2021-05-28 05:27:37
【问题描述】:

我正在制作一个安排会议的系统。每个会议最多可以安排三个议程项目。

我想使用组合框来选择会议日期,因为这些会议举行的时间相对比较少。

我有一个用于会议日期的单列表。我正在处理高度机密的信息,所以我将掩饰到最低限度。

结构如下:
会议日期
[日期(短日期格式)]

在议程项目表中,有一个会议日期组合框,由会议日期表提供。这按预期工作,用户单击组合框,日期出现在列表中。

我想做两个改进。

改进1:
当会议日期数据库中的日期是过去的日期时,它会从组合框选择中删除。 (如果日期刚刚从会议日期数据库中删除,我可以,因为日期将存储在议程项目数据库中,但我宁愿隐藏,以防我需要返回报告报告)。

改进2:
如果该日期有三个议程项目(即,该日期在议程项目表 - 会议日期列中存在 3 次),则该日期在组合框中不可选择(隐藏/禁用)。这样,如果我们取消一个项目,日期就会重新出现在列表中。

我会提供代码,但我不知道从哪里开始。我考虑了对 count 部分的查询,但我不知道如何将其链接回来。

【问题讨论】:

    标签: vba forms ms-access combobox


    【解决方案1】:

    建议不要在命名约定中使用空格。

    1. 只列出当前日期或之后的日期?

    2. 只选择还没有 3 个议程项目的日期?

    需要构建一个对议程项目进行计数的聚合查询,并在 LEFT JOIN to Meetings 表中使用该查询。

    SELECT * FROM Meetings LEFT JOIN (SELECT MeetingDate, Count(*) AS Cnt FROM AgendaItems GROUP BY MeetingDate) AS C
    ON Meetings.MeetingDate=C.MeetingDate
    WHERE MeetingDate>Date() AND Nz(Cnt,0)<3;
    

    【讨论】:

    • 谢谢,我看看能不能解决这个问题。我的表名/标题中没有空格。最初的帖子只是说明性的。
    • 我想我用错了。我修改了代码以使用数据库的实际表名和表头,然后粘贴到查询的字段:部分。我100%确定我做错了。我收到错误:“此表达式中子查询的语法不正确。检查子查询的语法并将子查询括在括号中。”
    • 不,嵌套查询不在字段中。将查询生成器切换到 SQLView 并键入或复制/粘贴其中一条 SQL 语句。根据需要更改表和/或字段名称。然后切换到设计视图。
    • 我选择了第二个选择,因为我理解它(大部分)。我想我有一个问题,因为会议数据库中的标题与 AgendaItems 数据库中的标题同名。这会引起冲突吗?如果我这样做,我将按预期获得未来的所有日期: SELECT * FROM Meetings WHERE MeetingDate > Date();但是,如果我继续查询的其余部分,我会得到空白结果。
    • 附录,如果计数不为零,它可以工作。我在表格中添加了一个日期,现在我得到了结果。有没有办法不排除零计数结果?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多