星期四, 1月 29, 2015

[Excel] 堆疊長條圖

有人詢問 Excel 堆疊長條圖上,要如何顯示各堆疊的百分比

資料準備,百分筆資料是利用公式從基礎資料產生

堆疊長條圖-1

利用基礎資料產生堆疊長條圖後,點選 "台北資料標籤" ,選擇分隔符號為"換行"並勾選儲存格的值、點選資料範圍

堆疊長條圖-2

選擇台北 Q1 - Q4 的百分比資料為資料來源,重複進行台中、高雄的設定

堆疊長條圖-3

設定完成圖,如下

堆疊長條圖-4

使用 Office 2013 來練習實做的

星期三, 1月 28, 2015

[SSRS] 分頁固定筆數

延續 [SSRS] 強迫分頁 這篇文章的問題,論壇問題出處
品名下每六筆資料就進行換頁,換頁的部分我已經有爬過 Google 上面的文章搞定了,但問題出在不滿六筆該如何把它補滿六筆
以下文章練習:
  1. 每頁要補滿 10 筆資料,沒有資料也要把資料空間顯示出來
  2. 設定群組檔頭,讓每一頁都可以顯示檔頭資訊
T-SQL 撰寫

利用 CTE 跑出每個部門每頁 10 筆資料 Table,EX:部門有 12 位,該部門就要有 20 筆資料存在
;
WITH CTE AS
(
    SELECT 
       D.DepartmentID AS DepID , 
       1 AS StartNO ,
       (((COUNT(D.DepartmentID) - 1) / 10) + 1) * 10 AS EndNO
    FROM Person.Person AS P
        JOIN HumanResources.EmployeeDepartmentHistory AS H ON P.BusinessEntityID = H.BusinessEntityID
        JOIN HumanResources.Department AS D ON H.DepartmentID = D.DepartmentID
    WHERE H.EndDate IS NULL
    GROUP BY D.DepartmentID
    UNION ALL
    SELECT 
        DepID ,
        StartNO + 1 ,
        EndNO
    FROM CTE 
    WHERE StartNO < EndNO
)
SELECT 
    T1.DepID ,
    T2.DepName,
    ((T1.StartNO - 1) / 10 ) + 1 AS Group10 ,
    T1.StartNO AS GroupNO,
    T2.LastName,
    T2.FirstName,
    T2.EmailAddress
FROM CTE AS T1
    LEFT JOIN
        (
            SELECT 
                D.DepartmentID AS DepID , 
                D.Name AS DepName , 
                ROW_NUMBER() OVER (PARTITION BY D.DepartmentID ORDER BY D.DepartmentID,P.LastName) AS GroupNO,
                P.LastName , 
                P.FirstName , 
                A.EmailAddress
            FROM Person.Person AS P
                JOIN Person.EmailAddress AS A ON P.BusinessEntityID = A.BusinessEntityID
                JOIN HumanResources.EmployeeDepartmentHistory AS H ON P.BusinessEntityID = H.BusinessEntityID
                JOIN HumanResources.Department AS D ON H.DepartmentID = D.DepartmentID
            WHERE H.EndDate IS NULL
        ) AS T2 ON T1.DepID = T2.DepID 
                   AND T1.StartNO = T2.GroupNO
ORDER BY T1.DepID , T1.StartNO
OPTION (maxrecursion 0)

下圖可見,雖然 Purchasing 部門只有 12 筆資料,但經過處理會產生 20 筆資料

[SSRS] 分頁固定筆數-1

星期二, 1月 27, 2015

[VS] XML 註解

遠距教學時,老師提到的 XML 備註實務用法

建立 demoProject,把 demoMethod 寫在一起的情況下,可以發現 XML 備註的說明會秀出來

[VS] XML 備註-1

把 demoMethos 移至 Utilites 類別庫內,並在 demoProject 內加入參考並引用,會發現 XML 備註並會有說明出現

[VS] XML 備註-2

Utilites 類別庫 => 屬性 => 建置 => 勾選 XML 文件檔案,建置就會一併匯出 XML 備註

[VS] XML 備註-3

demoProject 內就會出現 XML 備註的說明啦

[VS] XML 備註-4

[VS] 大綱 中發現,原來這一點小黑以前提醒過我,只是當時沒有慧根,^^'' ~~

星期一, 1月 26, 2015

[Azure] 安裝、設定 PowerShell

學習 Azure 時,發現到有些設定,目前沒有辦法透過管理介面來設定,還是必須透過 PowerShell 來完成。

Step1:下載安裝 PowerShell

從 Windows Azure 官網 => 下載 Tag => Azure 命令列介面 => Windows 安裝

[Azure] 安裝、設定 PowerShell-1
透過 Web Platform installer 5.0 來安裝 PowerShell,安裝過程會先安裝 MicrosoftAzure Cross-platform Command Line Tools

[Azure] 安裝、設定 PowerShell-2

之後必須再安裝 Windows Azure PowerShell 和 Microsoft Azure PowerShell (Standalone)(Chinese)

[Azure] 安裝、設定 PowerShell-3

星期六, 1月 24, 2015

[C#] 存取修飾詞

遠距教學時提到,順道整理以前的資料

MSDN 說明

宣告存取範圍意義
public存取沒有限制
protected存取只限於包含的類別或衍生自包含類別的型別
internal存取只限於目前的組件
protected internal存取只限於目前的組件或衍生自包含類別的型別
private存取只限於包含類別

表格化

存取權base classderived classassemblyworld
private
protected
internal
protected internal
public

簡易圖式範例

在一個 solution 中有兩個 project,在 class A 內宣告各種存取修飾詞變數,並分別在其他 class 中標示可存取的變數
    顏色說明
  • 灰色代表 Project (Assembly)
  • 橘色代表 class
  • 棕色代表變數
  • 紅色代表可存取 class A 的變數
  • 綠色代表繼承,class C 繼承 class A
[C#] 存取修飾詞-1
預設值

宣告預設值
namespacepublic
classinternal
memberprivate

星期五, 1月 23, 2015

[SSRS] 強迫分頁

[SSRS] 分頁頁碼 中有網友詢問,問題如下
你好,我有個也是關於顯示筆數的問題想請教你,若你有閒餘時間,期望你能撥空幫我想想,我的問題如下:

我的報表內需要顯示兩個欄位,並顯示在同一行;其中主要的欄位是品名,另一欄位則是品名的雜項支出,雜項支出顯示在每個品名的下面緊鄰著品名;目前我的品名是直接顯示在父報表內,雜項支出我是用子報表顯示於品名下方。

Question:請問我可以控制品名和雜項支出一頁只顯示六筆,超過就放下一頁。
[SSRS] 分頁頁碼 這篇筆記繼續往下延伸,目標是把各組別內的人員,每 10 位為一頁

Step1:修正 T-SQL 語法

在 T-SQL 語法內把各組人員再進行分組,每 10 位為一組,T-SQL 邏輯可參考這篇 Blog 筆記 [SQL] 次序函數應用-資料分組
SELECT 
    D.DepartmentID AS DepID , 
    D.Name AS DepName , 
    ((ROW_NUMBER() OVER (PARTITION BY D.DepartmentID ORDER BY D.DepartmentID,P.LastName) - 1) / 10) + 1 AS Group10,
    P.LastName , 
    P.FirstName , 
    A.EmailAddress
FROM Person.Person AS P
    JOIN Person.EmailAddress AS A ON P.BusinessEntityID = A.BusinessEntityID
    JOIN HumanResources.EmployeeDepartmentHistory AS H ON P.BusinessEntityID = H.BusinessEntityID
    JOIN HumanResources.Department AS D ON H.DepartmentID = D.DepartmentID
WHERE H.EndDate IS NULL
從下圖可以看見 Purchasing 部門有 12 筆資料,也就是說 SSRS 那應該分為兩頁來顯示

[SSRS] 強迫分頁-0

星期一, 1月 19, 2015

[Azure] 自動調整規模

該篇筆記為 [Azure] VM - 負載平衡和高可用性 延伸,自動調整規模是依照實際使用量自動增加或減少 "雲端服務規模"。

沒有設定可用性群組的雲端服務是無法進行自動調整規模
[Azure] 自動調整規模-1
有設定可用性群組的雲端服務 => 調整規模 => 設定排程時間

[Azure] 自動調整規模-2


星期五, 1月 16, 2015

[SQL] 複製欄位描述

論壇問題
要把 Source DB Table 欄位描述複製至目地 DB Table 中
測試環境簡易說明

須先建立 Source DB 和 Destination DB ,兩個 DB 中內含的 Employ Table
USE [Source] -- 須先建立 Source DB 和 Destination DB,然後根據需求來切換 DB
GO

-- 建立 Employ Table
CREATE TABLE [dbo].[Employ]
(
    [EmpNO] [int] NOT NULL,
    [EmpName] [nvarchar](20) NULL,
    [Birthday] [date] NULL,
    CONSTRAINT [PK_Employ] PRIMARY KEY CLUSTERED 
    (
        [EmpNO] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

-- Destination DB 內的 Employ 則不需要下面這段
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'員工編號' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Employ', @level2type=N'COLUMN',@level2name=N'EmpNO'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'員工姓名' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Employ', @level2type=N'COLUMN',@level2name=N'EmpName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'生日' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Employ', @level2type=N'COLUMN',@level2name=N'Birthday'
GO

星期一, 1月 12, 2015

[Azure] VM - 負載平衡和高可用性

閱讀 MVA 上影片後的筆記文,以下為建立負載平衡和高可用性步驟
  • Step1:建立虛擬網路
  • Step2:建立雲端服務
  • Step3:建立 VM 並設定 Load Balance
  • Step4:Load Balance 測試
  • Step5:建立高可用性群組
Step1:建立虛擬網路

加入 => 網路服務 => 虛擬網路 => 自訂建立

[Azure] VM - 負載平衡和高可用性-0

輸入虛擬網路名稱、選擇位置和訂用帳戶,之後兩個設定頁面保持預設值(直接下一步,不截圖說明)

[Azure] VM - 負載平衡和高可用性-1

已建立的 LBInternet 虛擬網路

[Azure] VM - 負載平衡和高可用性-2

星期一, 1月 05, 2015

[Azure] 兩台 Azure VM 使用內部 IP 互 ping

在 Windows Azure 上同一個虛擬網路中的 VM 可以自由傳遞訊息,不同虛擬網路則不行

先建立一個虛擬網路

[Azure] 兩台 Azure VM 使用內部 IP 互 ping-1

輸入名稱、選擇訂用帳戶和位置

[Azure] 兩台 Azure VM 使用內部 IP 互 ping-2

不指定的情況下,Azure 會自動指派 DNS 伺服器

[Azure] 兩台 Azure VM 使用內部 IP 互 ping-3

用預設子網路就行

[Azure] 兩台 Azure VM 使用內部 IP 互 ping-4

完成虛擬網路(VMInternet)的建立

[Azure] 兩台 Azure VM 使用內部 IP 互 ping-5