使用下拉列表填充表单 - 访问

时间:2013-05-24 15:06:08

标签: ms-access

我正在尝试在访问中创建一个在顶部有一个下拉列表的表单,并使用与所选内容相对应的记录填充表单的其余部分。

我在线查看了两个不同的指南,但都指向旧版本的Access,我想我错过了一些东西。

因此。我做了一切的顺序:

  1. 我去了表格。然后我点击了Form。这样就快速形成了所有字段作为文本框。

  2. 我删除了将成为下拉列表的字段,并放入了一个取消向导的下拉列表

  3. 在下拉列表的数据部分。我编辑了“行来源”以按顺序选择下拉列表中的字段和唯一ID。

  4. 我将绑定列设置为2(我已尝试过两者)

  5. 我将组合框的名称设置为“TitleSelector”

  6. 在表单设置中。对于“记录来源”。我有“[表格]![编辑片段]。[TitleSelector]&”*“在”ID“的条件中。我还有查询列表中的其余字段

  7. 我在改变时添加了“me.requery” 不确定它是否意味着什么。当我在“ID”的条件中输入时,它没有在下拉列表中显示“TitleSelector”。

  8. 我正在使用Access 2010

    编辑: 我的问题 - 下拉列表本身可以正确显示所有内容但是当我选择一些东西时没有任何反应

    编辑:

    SELECT Pieces.ID, Pieces.Title, Pieces.Composer, Pieces.Instrumentation, Pieces.Location, Pieces.Location_2
    FROM Pieces
    WHERE (((Pieces.ID)=[forms]![Edit Piece].[TitleSelector]));
    

    编辑: 以下是指向我的数据库副本的链接:https://www.dropbox.com/s/tpnqm686tj653fg/Trisha%20Database.accdb

2 个答案:

答案 0 :(得分:2)

将me.requery添加到ON CHANGE EVENT (选择CODE BUILDER - 并在那里输入me.requery)应该有效。

答案 1 :(得分:1)

我已经下载了示例文件。您的问题是[编辑片段]表单的Record Source设置为...

SELECT Pieces.ID, Pieces.Title, Pieces.Composer, Pieces.Instrumentation, Pieces.Location, Pieces.Location_2 FROM Pieces WHERE (((Pieces.ID)=[forms]![Edit Piece].[TitleSelector] & "*")); 

...而最后的& "*"导致查询没有返回任何记录。删除最后一位,使表单的Record Source为...

SELECT Pieces.ID, Pieces.Title, Pieces.Composer, Pieces.Instrumentation, Pieces.Location, Pieces.Location_2 FROM Pieces WHERE (((Pieces.ID)=[forms]![Edit Piece].[TitleSelector])); 

...让你的表格有效。

修改

要让表单显示相关表格中的信息(而不仅仅是[Pieces]表中的外键值),请从...更改表单的Record Source

SELECT Pieces.ID, Pieces.Title, Pieces.Composer, Pieces.Instrumentation, Pieces.Location, Pieces.Location_2 FROM Pieces WHERE (((Pieces.ID)=[forms]![Edit Piece].[TitleSelector])); 

...到...

SELECT Pieces.ID, Pieces.Title, Composer.Composer, Instrumentation.Instrumentation, Location.Location, Location_1.Location AS Location_2 FROM (Location INNER JOIN (Instrumentation INNER JOIN (Composer INNER JOIN Pieces ON Composer.ID = Pieces.Composer) ON Instrumentation.ID = Pieces.Instrumentation) ON Location.ID = Pieces.Location) INNER JOIN Location AS Location_1 ON Pieces.Location_2 = Location_1.ID WHERE (((Pieces.ID)=[forms]![Edit Piece].[TitleSelector]));