MS Access 條件格式只比較數字的第一位

MS Access 條件格式只比較數字的第一位

我有一個工作項目的 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)

相關內容