我有一個工作項目的 Access 資料庫,不幸的是,由於工作的性質,我無法分享太多細節。但基本上我有一個需要執行的操作表,每個操作都有一個截止日期,我有一個表使用以下邏輯計算每個月到期和已完成的操作數量:
Group by Month([Due Date])
Count [Due Date]
對於一個查詢,對於另一個查詢中的完成日期也是如此。然後,我有一個最終查詢,它使用到期日期查詢、完成的日期查詢和一年中的月份表(否則不會顯示空月份)。所以我有以下內容:
Nz(Due Dates Totals.Count,0)
Nz(Completed Dates Totals.Count,0)
Calendar.Month Number
Calendar.Month Name
(Nz
上面的內容是為了讓我的報告中沒有空格)
然後,我的報告使用月份編號進行排序和分組,使用月份名稱向使用者顯示月份,並使用包含到期作業和總操作的小表。然後,我在表格上設定了條件格式,這樣,如果已完成的操作少於應有的操作,則它會突出顯示為紅色,如果相等,則為綠色,而完成的操作多於應有的操作意味著“已完成”欄位為藍色。
除非其中一個數字是兩位數,否則它工作正常,在這種情況下,它只比較每個值的第一個數字,例如19 < 2
我嘗試將欄位中的值與查詢本身的到期計數進行比較,並將其與報告中欄位中的值進行比較,它們都有相同的問題。我的猜測是,它將它們作為字串而不是數字進行比較,但我不知道如何強制查詢將計數儲存為數字。
感謝您的任何幫助。 (順便說一句,資料庫中有更多的表格等,Excel 不是適合這項工作的工具)。
答案1
如果 MS Access 將數值解釋為字串,則可以使用以下方法之一將字串值強制/轉換為數字資料類型類型轉換函數,其中的選擇顯然取決於數據的性質:
CCur
(以貨幣計算)CDbl
(至雙倍)CDec
(轉為十進位)CInt
(轉為整數)CLng
(對龍)CSng
(對單身)
由於您希望使用整數,因此CInt
如果您的值可能超過 32767 (2 15 -1),我建議使用 或CLng
。
所以你的程式碼可能會變成:
CInt(Nz([Due Dates Totals].Count,0))
CInt(Nz([Completed Dates Totals].Count,0))
Calendar.[Month Number]
Calendar.[Month Name]
答案2
找到了解決方案,我將Nz()
函數相乘1
,強制它們是數字而不是字串。
例如,而不是
Nz(Due Dates Totals.Count,0)
我用了
1 * Nz(Due Dates Totals.Count,0)