在上一節中實現了使用按鈕動态查詢報表的功能,報表中的數據都是彙總數據,如果要查看報表某一單元格内彙總的數據包含哪些明細數據,就要用到【顯示明細】按鈕了。
具體操作如下:
當用戶在報表界面想查看某一項彙總數據的明細時,用鼠标點擊,把想要查看的數據所在單元格變成活動單元格,點擊【顯示明細】按鈕,宏代碼将與活動單元格相關的明細數據和項目彙總數據分别提取到不同的工作表内。
活動單元格相關的數據依據就是對标題和排序彙總行的解析,然後形成查詢條件,如圖13.0:
标題與排序 圖13.0
在報表.et工作薄,新增兩個工作表,分别命名為【項目分類明細彙總】、【支出明細】,用于存放“項目分類明細彙總數據” 和 “支出明細”。如圖13.1:
新增工作表 圖13.1
▶ 從database.et工作薄提取 “項目分類明細彙總數據” 的SQL語句分析如下:
“項目分類明細彙總數據”,是根據活動單元格提供的條件,從數據源提取相同項目的彙總數據。
相同項目的彙總數據,根據 第6節 項目的分類條件,使用的分類語句是:
select [單位], [項目], [支出功能分類],
max([指标總金額]) as [指标總額],
max([指标已用金額]) as [已用指标],
[指标總額] -[已用指标] as [指标餘額],
sum([計劃金額]) as [計劃金額],
round([已用指标]/[指标總額]*100,2) & "%" as [預算執行進度],
[政府經濟分類], [部門經濟分類], [項目類别],[是否政府采購]
from [src$]
?//where
group by [單位], [項目], [項目類别], [支出功能分類],
[政府經濟分類], [部門經濟分類], [是否政府采購]
上面這條分組語句為了避免字段名沖突産生錯誤,将 max([指标總金額]) 和 max([指标已用金額]) 分别重命名為 [指标總額] 和 [已用指标]。
裡面加了這條語句:round([已用指标]/[指标總額]*100,2) & "%" as [預算執行進度],用于顯示預算執行進度,顯示示例:100%。
同樣根據 第10節 的類似内容,在執行宏代碼的時候,将?替換成where語句就可以了。
将以上SQL語句複制後,粘貼存儲到【字典】工作表的D2單元格,并在F2中錄入“項目分類明細彙總語句”,作為标識。如圖13.2。
▶ 從database.et工作薄提取 “支出明細” 的SQL語句分析如下:
“支出明細”,是根據活動單元格提供的條件,從數據源提取關鍵列的數據明細。
“支出明細”的SQL語句如下:
select [編号], [單位], [項目],
([指标總金額] 0) as [指标總金額],
([指标已用金額] 0) as [指标已用金額],
([指标可用金額] 0) as [指标可用金額],
([計劃金額] 0) as [計劃金額],
round(([指标已用金額]/[指标總金額])*100,2) & '%' as [執行進度],
[計劃月份],[支出功能分類],[政府經濟分類],[部門經濟分類],[項目類别],[是否政府采購]
from [src$] ?
上面語句中類似([指标總金額] 0)這種金額的字段處理,将文本轉換成了數值。
在此之前的SQL語句在涉及到金額的地方都使用了聚合函數,這些文本格式的字符串被聚合函數自動的轉換成了數值。
上面這條語句沒有使用聚合函數,所以對金額使用計算,自動地将文本轉換為數值。
将以上SQL語句複制後,粘貼存儲到【字典】工作表的D3單元格,并在F3中錄入“支出明細語句”,作為标識。如圖13.2。
新增SQL語句 圖13.2
至此,本節完成了明細查詢的方案設計。
在下一節,将實現明細查詢的宏代碼。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!