首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 KPI 展示控件開發詳解:從 XMLA 到自訂 DataGridView

     編輯:關於SqlServer

背景與原理

SSAS KPI 定義包含:值表達式、目標表達式、狀態指標/表達式、趨勢指標/表達式。SSMS 內建 KPI 瀏覽器透過預設圖片集根據狀態/趨勢值 (-1, 0, 1 等) 顯示對應圖示。圖片路徑通常在:
D:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\DataWarehouseDesigner\KPIsBrowserPage\Images

自訂控件架構

  1. DataGridViewStatusCell 繼承 DataGridViewImageCell,覆寫 GetFormattedValue 解析「指標類型,數值」並回傳對應圖片資源。
  2. DataGridViewStatusColumn 繼承 DataGridViewImageColumn,指定 CellTemplate 為上述 Cell。
  3. 專案資源檔 (Properties.Resources) 內嵌所有指標圖片 (紅綠燈、儀表、笑臉、箭頭等)。

核心程式碼片段

internal class DataGridViewStatusCell : DataGridViewImageCell
{
    protected override object GetFormattedValue(object value, int rowIndex, 
        ref DataGridViewCellStyle cellStyle, TypeConverter valueTypeConverter, 
        TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context)
    {
        string[] parts = value.ToString().Split(',');
        string graphType = parts[0]; // Shapes, TrafficLight, GaugeAscending...
        double status = Double.Parse(parts[1]); // -1, -0.5, 0, 0.5, 1

        switch (graphType)
        {
            case "Shapes":
                return status == -1 ? Properties.Resources.Stoplight_Single0 :
                       status == 0 ? Properties.Resources.Stoplight_Single1 :
                       Properties.Resources.Stoplight_Single2;
            case "TrafficLight":
                return status == -1 ? Properties.Resources.Stoplight_Multiple0 :
                       status == 0 ? Properties.Resources.Stoplight_Multiple1 :
                       Properties.Resources.Stoplight_Multiple2;
            case "GaugeAscending":
                // -1, -0.5, 0, 0.5, 1 對應 5 階段儀表圖
                ...
            // 其他指標類型: RoadSigns, Thermometer, Cylinder, SmileyFace, VarianceArrow
            default: return Properties.Resources.empty;
        }
    }
}

資料來源:XMLA 查詢 KPI 狀態

使用 ADOMD.NET 執行 DISCOVER_KPIS 或 SELECT ... FROM $SYSTEM.MDSCHEMA_KPIS 取得 KPI 定義與當前值,計算狀態/趨勢值,組合為「指標類型,數值」字串繫結至 DataGridView。

部署與整合

  • 將控件專案編譯為 DLL,加入 WinForms/WPF 專案工具箱。
  • DataGridView 設定 AutoGenerateColumns=false,手動加入 DataGridViewStatusColumn。
  • 支援動態切換指標類型 (KPI 定義中 StatusGraphic 屬性)。

總結

自訂 KPI 展示控件解決了 SSAS 未公開展示 API 的缺口,靈活整合於企業 BI 入口網站,支援豐富指標視覺化與即時資料繫結。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved