ms access 2007查询列仅选择仍然可用的记录

时间:2014-02-11 21:32:40

标签: vba ms-access-2007

我有一张桌子“会员”和一张桌子“书籍”。一个成员可以属于许多书籍,但一本书只能属于一个成员,所以我创建了多对一的关系。我创建了一个中间表“Owners”。

我将以“f_Members”的形式放入一个子表单“f_Books”,在此我希望为一个字段提供一个包含所有书籍列表的查阅列。现在,对于第一个成员,我将选择让我们说book1和book2,然后在查阅列的子表单中我想要的第二个成员列出所有书籍,但book1和book2灰色,不再可以选择它们。

这可以在2007年访问吗?先感谢您。

1 个答案:

答案 0 :(得分:0)

首先,作为多对一关系,您不需要中间表,而是在Books表中添加外键,引用成员的主键。

执行此操作可能需要更多代码,但我会考虑以下内容:

在f_Books中,将记录集指定为[Books]表。 如果您希望将已选择的图书显示为灰色,则可以使用条件格式(see here)轻松完成,其表达式为Nz([books_fk_member_id]) <> ''

您可以添加第二个条件,使用Nz([books_fk_member_id]) = [Forms]![f_Members]![control_showing_member_id]这样的表达式为此成员已选择的书籍着色。

为了让他们不要可选择的,我认为[启用]检查按钮可能会为你做的伎俩,或者你可以写在VBA一些代码,指的[Forms]![f_Members]![Form]![f_Books]![books_fk_member_id],以确定图书的所有者。

所有这一切,鉴于您选择消除额外的表格。如果你没有逻辑是相同的,你只需要使用更复杂的条件来获得相同的结果。

希望我能帮到你。