2016-01-06 145 views
0

記錄平均子集我有測試結果表studentsteststest_results的數據庫。在test_results每個記錄是指從students的關鍵,從tests的關鍵,得分和有/無爲無現場。我還有一份報告,每個測試都有子標題(分組)。我想顯示每個測試在該測試標題上的平均分數,但我只想計算那些學生沒有缺席的記錄的平均分數。MS交通:報告

我嘗試失敗兩種方法:

  1. 命名averageScoreWhereNotAbsent查詢這是SELECT Avg(score) AS Expr1 FROM test_results WHERE (((test_results.absent])=False));;以及報告的測試分組子標題上的未綁定字段,其來源表達式爲=DLookUp("[score]","[averageScoreWhereNotAbsent]![Expr1]","[test] = " & [ID])。不幸的是,這會返回'#error'。我試着調整它,但它會問我參數,或者會奇怪地顯示最後一個學生的分數而不是平均分。我的語法有什麼問題?

  2. 一些VBA通過test_results循環尋找符合當前的測試序號,並沒有標明是缺席領域。它總結並平均它們,並更新測試子標題上的未綁定字段。代碼在加載報告時調用。它工作...但每個測試顯示相同的平均值。在報表視圖的問題是顯而易見的:(,該字段重複一次該子頭重複,即對每個測試的時間,但在設計視圖中你只看到一個子頭和一個領域 - 我不知道有什麼辦法請參閱各子頭從VBA個別領域 - 我想這是所有同場

我認爲答案是微不足道的,但我是新來的訪問 - !我失去了什麼感謝

+0

怎麼能缺席的學生拿一個測試? – Parfait

+0

這就是我的想法......但學校堅持認爲有區別 - 他們想跟蹤應該出席的人。他們有0分。 – anotherfred

回答

1

如果你要?!平均通過測試,則通過可變在聚集查詢添加測試作爲一組(當然調整ID實際字段名稱指示測試):

SELECT test_ID, Avg(score) AS AverageScore 
FROM test_results 
WHERE (((test_results.[absent])=False)) 
GROUP BY test_ID; 

然後在報告中DLookUp看起來像下面的(當然調整報告的名稱和爲test_id控制自己的實際名稱,並確保控制部分存在,它被放置):

=DLookUp("[AverageScore]","[averageScoreWhereNotAbsent]", 
     "[test_ID] = " & Reports!reportname!test_IDfield) 
+0

謝謝! - 看起來不錯,但必須等上午才能確認......會讓你知道! – anotherfred

+0

哇,太棒了!謝謝。我標記爲答案,但沒有足夠的聲望讓你看到我的upvote。 1個拼寫錯誤:你留下了'['out of(((test_results.absent])= False)) - 發生在我們身上。 – anotherfred