2013-12-20 48 views
2

我有性能數據(95%,100%,120%等)需要格式化爲百分比,所以我可以排序和條件格式。打開MS Access報告的屬性窗口後,它將允許我更改從表格中直接提取的值的格式(常規編號,貨幣,百分比等),如employee_idshift。但其他人,如[6 wks ago],[5 wks ago],並在下不允許我這樣做。這是因爲該字段是IIF()聲明的結果嗎?下面的查詢是我原來的查詢:爲什麼我無法更改MS Access報表中數字字段的格式?

SELECT 
D2s_roster_tbl.employee_id AS ID, 
D2s_roster_tbl.employee_name AS Name, 
D2s_roster_tbl.position_desc AS [Position], 
D2s_roster_tbl.adj_hire_dt AS [Hire DT], 
D2s_roster_tbl.shift_nbr AS Shift, 
D2s_roster_tbl.supervisor, 
IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[11/09],[trndPerformanceQry_crosstab].[11/09]) AS [6 wks ago], 
IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[11/16],[trndPerformanceQry_crosstab].[11/16]) AS [5 wks ago], 
IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[11/23],[trndPerformanceQry_crosstab].[11/23]) AS [4 wks ago], 
IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[11/30],[trndPerformanceQry_crosstab].[11/30]) AS [3 wks ago], 
IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[12/07],[trndPerformanceQry_crosstab].[12/07]) AS [2 wks ago], 
IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[12/14],[trndPerformanceQry_crosstab].[12/14]) AS [Last wk], 

FROM 
((D2s_roster_tbl 
LEFT JOIN trndLoaderPerformanceTbl_Crosstab ON D2s_roster_tbl.employee_id = trndLoaderPerformanceTbl_Crosstab.employee_id) 
LEFT JOIN trndPerformanceQry_Crosstab ON D2s_roster_tbl.employee_id = trndPerformanceQry_Crosstab.employee_id) 
LEFT JOIN trndPerfFormatPercent_Crosstab ON D2s_roster_tbl.employee_id = trndPerfFormatPercent_Crosstab.employee_id; 

所以我想好了,它不希望格式化這樣的條件語句的結果。所以我把該系列的IIF()s在FROM語句,並直接選擇這些值,如下圖所示:

SELECT 
D2s_roster_tbl.employee_id AS ID, 
D2s_roster_tbl.employee_name AS Name, 
D2s_roster_tbl.position_desc AS [Position], 
D2s_roster_tbl.adj_hire_dt AS [Hire DT], 
D2s_roster_tbl.shift_nbr AS Shift, 
D2s_roster_tbl.supervisor, 
j.[6 wks ago], 
j.[5 wks ago], 
j.[4 wks ago], 
j.[3 wks ago], 
j.[2 wks ago], 
j.[Last wk] 

FROM 
((D2s_roster_tbl 
LEFT JOIN trndLoaderPerformanceTbl_Crosstab ON D2s_roster_tbl.employee_id = trndLoaderPerformanceTbl_Crosstab.employee_id) 
LEFT JOIN trndPerformanceQry_Crosstab ON D2s_roster_tbl.employee_id = trndPerformanceQry_Crosstab.employee_id) 
LEFT JOIN (SELECT 
    d2s_roster_tbl.employee_id, 
    IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[11/09],[trndPerformanceQry_crosstab].[11/09]) AS [6 wks ago], 
    IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[11/16],[trndPerformanceQry_crosstab].[11/16]) AS [5 wks ago], 
    IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[11/23],[trndPerformanceQry_crosstab].[11/23]) AS [4 wks ago], 
    IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[11/30],[trndPerformanceQry_crosstab].[11/30]) AS [3 wks ago], 
    IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[12/07],[trndPerformanceQry_crosstab].[12/07]) AS [2 wks ago], 
    IIf([D2s_roster_tbl].[Position_desc] Like "*loader*",[trndLoaderPerformanceTbl_Crosstab].[12/14],[trndPerformanceQry_crosstab].[12/14]) AS [Last wk] 

    FROM 
    ((D2s_roster_tbl 
    LEFT JOIN trndLoaderPerformanceTbl_Crosstab ON D2s_roster_tbl.employee_id = trndLoaderPerformanceTbl_Crosstab.employee_id) 
    LEFT JOIN trndPerformanceQry_Crosstab ON D2s_roster_tbl.employee_id = trndPerformanceQry_Crosstab.employee_id)) AS J ON d2s_roster_tbl.employee_id = j.employee_id; 

它不允許我到[n wks ago]列從該查詢這兩種格式。我原來的表演表有4列:employee_id,week_ending_dt,goal_hrshrs_worked。這些數據爲過去6周,所以我創建了交叉表查詢來爲每週提供一個不同的列(我們正在使用這個查看一週中的性能趨勢)。加載器性能與其他人的性能分開存儲,所以這就是爲什麼我需要查詢中的IIF()。有什麼方法可以獲得這些信息,以便將最終性能值保留爲格式可以更改的數值?

This here是我的原始問題,但我缺乏特異性意味着這個答案是不可行的。謝謝!

+0

也許列值是字符串而不是數字。 –

+0

好問題。我很好奇這裏的答案,我相信你剛剛厭倦了現在的訪問。屬性窗口是否給你任何格式化選項? – shadowjfaith

+0

發現提供交叉表的查詢具有以下性能表達式:IIf([d2s_performance_tbl]。[hrs_worked] = 0,「」,Round(([[d2s_performance_tbl]。[goal_hrs]/[d2s_performance_tbl]。[hrs_worked]), 2))。去除IIF並保留計算結果將使其保持一個數字值,並允許進行排序/格式化。我應該假設「」總是一個字符串?或者,IIF函數將其作爲字符串返回? –

回答

1

事實證明,該飼料的交叉表查詢有以下性能表現:

IIf([d2s_performance_tbl].[hrs_worked]=0,"", Round(([d2s_performance_tbl].[goal_hrs]/[d2s_performance_tbl].[hrs_worked]),2))

卸下IIF()只留下

Round(([d2s_performance_tbl].[goal_hrs]/[d2s_performance_tbl].[hrs_worked]),2)

離開值作爲數字,這並貫徹報告,讓我改變百分比和排序和所有其他有趣的事情隨之而來數值。

相關問題