2011-08-17 133 views
1

正如標題所說,我正在尋找一種方法來計算一個人完成的任務的百分比。數據的結構,使每個人都有可以有很多任務,每個任務可以有多個子任務,如下所述:MS-Access計算報告中已完成任務的百分比

員工

  • (PK)(自動編號)EMPLOYEE_ID
  • (文本)姓
  • (文本)姓氏

任務

  • (PK)(自動編號)TASK_ID
  • (FK)(編號)EMPLOYEE_ID
  • 完成(備註)說明
  • (是/否)

子任務

  • (PK)(自動編號)subtask_id
  • (FK)(號碼)TASK_ID
  • (備註)說明
  • (是/否)已完成

我一直試圖做一個報告(名爲 「任務完成率」),該目錄所有員工,已完成任務的數量,他們擁有的任務總數以及完成率(以百分比表示)。目前,我有以下兩個查詢:!

  • SELECT COUNT(EMPLOYEE_ID)FROM [任務] AS TotalTask​​s WHERE [任務] .employee_id = 報告[任務完成率] txt_employeeID
  • SELECT COUNT (EMPLOYEE_ID)FROM [任務] AS CompletedTasks WHERE [任務] .employee_id =報道![任務完成率】!txt_employeeID和[任務] .Completed = 1

都是那些必要的,或者是有辦法從一個查詢中獲得兩個計數?另外,如何在報告中使用這些總數?報告的記錄源設置爲僱員表,以便它可以列出所有。我已經準備好了每個文本框,但是我在使用每個文本框的源代碼中的表達式生成器來實際顯示查詢結果時遇到了問題。我將其中一個文本框的源設置爲= [qry_TotalTask​​sPerEmployee]![TotalTask​​s](通過表達式生成器),但它始終提示我輸入[qry_TotalTask​​sPerEmployee]的值。任何想法如何讓這個工作?

+0

我要問一個關於使用更新查詢將主任務標記爲已完成/未完成的問題,但我決定做一些與此不同的事情,只是忘記刪除問題的這一部分。 –

回答

0

嘗試採取您的完成價值的意思。例如:

SELECT employee_id, -avg(Completed) FROM [Tasks] GROUP BY employee_id 

-avg之前是因爲true存儲爲-1,如由@Neil指出。

我不確定你對報告的含義 - 應該很容易將查詢結果放在報告中。

+1

不錯的答案,但你忘記了True是-1,所以你需要取消沿線的某個值。 – Neil

+0

好的。我將編輯SQL。 – Patrick

+0

謝謝,這工作得很好!但是,我希望我可以標記你的答案,因爲我最終使用了Eddy提出的總計算來計算完成任務的總數。 –

0

我不是真的進入msaccess報告,但自從完成似乎是0或1你應該對以下查詢 -Edit原來是1或-1的布爾,所以不能做一個總和(完成)但需要一個IIF()

Select employee_id, count(*), sum(IIF(completed,1,0)), sum(IIF(completed,1,0))*100/count(*) as rate 
From employees 
Left join tasks 
On tasks.employee_id = employees.employee_id 
Group by employee_id 

請注意,這確實爲沒有任務的員工創建了除零問題。你將必須欺騙如何處理這些(排除,顯示爲0%或...)