【问题标题】:Populating a form with a dropdown - Access使用下拉列表填充表单 - Access
【发布时间】:2013-05-25 23:03:21
【问题描述】:

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

我在网上查看了 2 个不同的指南,但都指向旧版本的 Access,我认为我遗漏了一些东西。

所以。我做所有事情的顺序:

  1. 我走到桌边拿表格。我点击了表格。这制作了一个快速表单,所有字段都作为文本框。

  2. 我删除了将成为下拉菜单的字段,并在下拉菜单中添加了取消向导

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

  4. 我将绑定的 Column 设置为 2(我都尝试过)

  5. 我将 Combo Box 的名称设置为“TitleSelector”

  6. 在表单设置中。对于“记录源”。我在“ID”的条件中有“[forms]![Edit Piece].[TitleSelector] 和“*”。我还列出了查询中的其余字段

  7. 我将“me.requery”添加到 on change 不确定这是否意味着什么。当我输入“ID”的标准时,下拉菜单中没有显示“TitleSelector”。

我正在使用 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

【问题讨论】:

  • 如果您在打开表单并在组合中进行选择后打开即时窗口 (Ctrl+g),然后键入 ? [forms]![Edit Piece].[TitleSelector] 并按回车...即时窗口会显示什么值?
  • 如果我取出 & "*",当我打开表单时它会要求一个参数。我按照你的要求做了。它给了我“2”,这是所选人的 ID。
  • 在我听来有些不对劲。我以为您使用 SELECT 查询作为表单的记录源。请编辑该查询,切换到 SQL 视图,复制 SQL 文本并将其粘贴到您的问题中。 (编辑查询时无需保存任何更改。)
  • SELECT Pieces.ID, Pieces.Title, Pieces.Composer, Pieces.Instrumentation, Pieces.Location, Pieces.Location_2 FROM Pieces WHERE ((((Pieces.ID)=[forms]![Edit Piece ].[TitleSelector]));
  • 我看不出那个查询有什么问题,乔恩。但是,我也没有看到您提到的& "*"。我现在更迷茫了。

标签: ms-access


【解决方案1】:

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

【讨论】:

【解决方案2】:

我已经下载了示例文件。您的问题是 [Edit Piece] 表单的 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]));

【讨论】:

  • 谢谢,我不完全确定为什么我第一次尝试这样做时不起作用。你知道我如何用显示另一个表中的值的下拉列表替换那些文本字段(而不是显示 Composer 的 ID,而是显示名称)?我只是试图让它显示ID。其余字段会更新,但该字段不会更改。
猜你喜欢
  • 2014-10-07
  • 2017-03-01
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 2012-11-07
相关资源
最近更新 更多