MS Access 2010:如何避免不可编辑的查询结果?

时间:2011-11-02 21:53:19

标签: ms-access ms-access-2010

我正在处理我的第一个Access 2010数据库,并且在编辑查询返回的记录集时遇到了问题。 This excellent blog entry详细说明了可能导致无法编辑的查询结果的几种情况。我相信我的查询结果不可编辑,因为我的查询有笛卡尔加入。

但是,我不确定如何避免这种情况。涉及的三个表是:

  • 发作
    • 个人电视剧集
    • 主键:“episode_id”
  • aridates
    • 特定剧集的个人播出期
    • 主键:“airdate_id”
    • 与“airdate_episode_id”的“剧集”相关
  • startdates
    • 给定剧集的个人下载开始日期
      • 即。什么时候可以下载给定的剧集
    • 主键:“startdate_id”
    • 与“startdate_episode_id”的“剧集”相关

所以,没有(和我认为可能不是)airdates和startdates之间的直接关系。但是,这会产生查询:

SELECT episodes.episode_id, episodes.episode_number, episodes.episode_title, airdates.airdate_region_id, airdates.airdate_date
FROM (episodes LEFT JOIN airdates ON episodes.episode_id = airdates.airdate_episode_id) LEFT JOIN startdates ON episodes.episode_id = startdates.startdate_episode_id;

返回一个不可编辑的记录集。我需要能够看到剧集名称和号码以及airdate才能输入一个开始日期(剧集在播出之前无法下载)。基本上,在这个视图中我只需要能够编辑“startdates.stardate_date”。

提前感谢任何建议...有问题的关系can be seen here的屏幕截图。

1 个答案:

答案 0 :(得分:2)

创建此查询:

SELECT
    episodes.episode_id,
    episodes.episode_number,
    episodes.episode_title,
    airdates.airdate_region_id,
    airdates.airdate_date
FROM
    episodes LEFT JOIN airdates
    ON episodes.episode_id = airdates.airdate_episode_id;

将其用作新表单的记录源。然后创建另一个表单,该表单仅使用startdates表的查询作为其记录源。

将第二个表单作为子表单添加到第一个表单。在子窗体控件的属性表上,创建链接主字段episode_id和链接子字段startdate_episode_id。

如果成功,子窗体将显示startdates行,其中startdate_episode_id与主窗体当前记录的episode_id匹配。如果在子窗体中添加新行,则其startdate_episode_id将从主窗体“继承”episode_id。

我之前强调过控制,因为这一点可能令人困惑。子窗体控件是主窗体的控件集合的成员,子窗体控件包含子窗体。您必须在子窗体控件上找到链接主/子字段属性,而不是实际的子窗体本身。