我正在处理我的第一个Access 2010数据库,并且在编辑查询返回的记录集时遇到了问题。 This excellent blog entry详细说明了可能导致无法编辑的查询结果的几种情况。我相信我的查询结果不可编辑,因为我的查询有笛卡尔加入。
但是,我不确定如何避免这种情况。涉及的三个表是:所以,没有(和我认为可能不是)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的屏幕截图。
答案 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。
我之前强调过控制,因为这一点可能令人困惑。子窗体控件是主窗体的控件集合的成员,子窗体控件包含子窗体。您必须在子窗体控件上找到链接主/子字段属性,而不是实际的子窗体本身。