2011-11-07 109 views
0

我正在創建一個數據庫來跟蹤我的學生參與課程。這是我迄今爲止設立的。我正在Access 2007中工作。在Microsoft Access中創建關係

參與者主表 - 名稱,聯繫信息,已註冊的類,已註冊的學期。在表中定義了入選的班級(A班,B班,C班)和登記學期(第1學期,第2學期)。主鍵是一個自動增量編號,但學生都會獲得學校編號(參與者ID)。

Query1爲名稱爲&的學生提供的地址爲第2學期,第2學期 (SELECT name, address FROM ParticipantMaster WHERE EnrClass = "Class A" and EnrSem = "Semester 2")。查詢起作用。

DailySessionLog是一個表格,用於表示每個日常課程。包括日期,教師姓名(從列表中檢查),討論主題(從列表中檢查)的字段。

現在我想將DailySessionLog鏈接到Query1 - 讓我每天檢查是否有一名學生在那天進行無,部分,半或全部會話。我無法鏈接這些和創建子窗體。任何幫助?

我試過在DailySessionLog中有一個ParticipantID字段,該字段鏈接到Query1中的ParticipantID。它不承認它是一個:一個還是:多個關係。如果我繼續使用Access嚮導創建子窗體,它會將參與者數據視爲「較高」形式,將DailySessionLog數據視爲「子」形式。我希望它是相反的方式。

感謝您的幫助!

回答

1

要創建一對一或一對多的關係,您應該將DailySessionLog鏈接到ParticipantMaster而不是Query1,然後創建一個查詢來顯示給定學期的給定類的每日會話日誌。

SELECT {field list} FROM ParticipantMaster INNER JOIN DailySessionLog ON {join expression} WHERE ParticipantMaster.EnrClass = "Class A" AND ParticipantMaster.EnrSem = "Semester 2"

但是,最好使用可變參數而不是硬編碼的字符串。例如:

SELECT {field list} FROM ParticipantMaster INNER JOIN DailySessionLog ON {join expression} WHERE ParticipantMaster.EnrClass = [ClassName] AND ParticipantMaster.EnrSem = [SemesterName]

或者,使用從控制值的開放形式:

SELECT {field list} FROM ParticipantMaster INNER JOIN DailySessionLog ON {join expression} WHERE ParticipantMaster.EnrClass = [Forms]![FormName]![ClassControlName] AND ParticipantMaster.EnrSem = [Forms]![FormName]![SemesterControlName]

編輯

其實,你想用這個和xQbert的想法,所以,爲了簡潔起見,使用這樣的表名:

Participants (a.k.a. ParticipantMaster) 
Sessions (a.k.a DailySessionLog) 
ParticipantSession (a.k.a. Participant_daily_session_log) 

第一個查詢會更類似於:

SELECT {field list} 
FROM 
    Participants 
    INNER JOIN ParticipantSession ON Participant.ID = ParticipantSession.ParticipantID 
    INNER JOIN Sessions ON ParticipantSession.SessionID = Session.ID 
1

你打算在哪裏數據庫「存儲」參與?

我認爲問題是你需要另一張表:Particpiant_Daily_sessioN_log這將存儲每個學生參與每日日誌的結果。

想想這個表dailysessionlog你不希望指導者名稱,主題和日期列在每個學生那裏嗎?

所以你有很多學生可以上課,一個班可能有很多學生。這意味着你有很多很多需要解決的問題,在訪問之前可以找出你想要做的事情。

認爲以下表格: 參與者(ParticipantID) 類(的ClassID) 會議(的SessionID,的ClassID) ClassParticipants(CLASSID,ParticipantID,學期一年 SessionParticipants(SessionID的,的ClassID,ParticipantID)