2011-11-02 157 views
1

我正在使用我的第一個Access 2010數據庫,並遇到編輯從查詢返回的記錄集的問題。 This excellent blog entry詳細說明了可能導致不可編輯的查詢結果的幾種情況。我相信我的查詢結果不可編輯,因爲我的查詢具有笛卡爾聯接。MS Access 2010:如何避免不可編輯的查詢結果?

但是我不確定如何避免這種情況。所涉及的三個表是:

  • 發作
    • 個別電視劇集
    • 主鍵: 「episode_id」
  • aridates
    • 對於給定的插曲個人airdates
    • 小學鍵:「airdate_id」
    • 相關的 「情節」,由 「airdate_episode_id」
  • startdates
    • 單獨下載,startdates對於給定的插曲
      • 即當一個特定的場景將可以下載
    • 主鍵:「startdate_id」
    • 通過「startdate_episode_id」與「episodes」相關聯

所以,沒有(和我認爲可以沒有)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的屏幕截圖。

回答

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。

如果成功,子窗體將顯示startdate行,其中startdate_episode_id與主窗體的當前記錄的episode_id匹配。如果在子窗體中添加新行,其startdate_episode_id將從主窗體「繼承」episode_id。

我之前強調過控制,因爲這一點可能會令人困惑。子窗體控件是主窗體的控件集合的成員,並且子窗體控件包含子窗體。您必須在子窗體控件上找到鏈接主/子字段屬性,而不是實際的子窗體本身。

+0

謝謝漢斯!這樣做的訣竅......我需要充分利用表格的格式,使其儘可能地變得可用,但這絕對是我需要的。 – boybert