星期二, 10月 29, 2013

[SSRS] 清單和矩形差異

一開始使用清單和矩形時,有點搞不清楚,此篇為研究後的筆記
  • 清單(List)
清單資料區域會隨報表資料集中的每一個群組或資料列重複。 清單可以用於建立自由形式的報表或表單 (如發票),也可以與其他資料區域一起使用。 您可以定義包含任何數目之報表項目的清單。 清單可以巢狀放在另一份清單內,以提供多個資料群組。
  • 矩形(Rectangle)
使用矩形做為其他控件的容器。當移動矩形時,包含在矩形中的項目會跟著它移動。矩形內部的項目會以其 Parent 屬性顯示矩形的名稱。
  • 文字說明兩者差異
清單會逐筆顯示所連接資料集和群組後的詳細資料,而矩形只是一個形狀、容器,用來群組控件用。
  • 設計界面差異
一開始打開書本範例,直覺是長的都一模一樣是要怎麼分辨哪個是清單,那個是矩形
[SSRS] 清單和矩形差異 -1
想說屬性視窗總會顯示是那個控件,沒想到清單和矩形在屬性視窗內都是 Rectangle 矩形

[SSRS] 清單和矩形差異 -2

後來發現,點擊控件就可以看出兩者差異,清單會出現資料列和資料行控點,矩形則是會出現被點選的外框線和十字移動符號。
[SSRS] 清單和矩形差異 -3

星期五, 10月 25, 2013

[SQL] 工作天判斷

利用 CTE 產生完整日期資料表,搭配一個例外 Table 來輔助判斷,例外 Table 的設立主因是無法預測人事行政局到底是如何規劃假期、防災假等原因。
  • 利用 201302 來說明,23 號上班日是補 15 號彈休。
[SQL] 工作天判斷-1

星期四, 10月 24, 2013

[VFP] 更換 VFP IDE 介面字型

字型大小對於閱讀 code 有很大的幫助,記錄一下如何更改 VFP IDE 字型和字型大小
  • Task Panel Manager => Tools => Options
[]VFP] 更換 VFP IDE 介面字型大小-1
  • IDE Tag 內進行設定
[]VFP] 更換 VFP IDE 介面字型大小-2
  1. Type:可以選擇針對哪個 IDE 介面來進行設定修改
  2. Font:選擇字型和字型大小
  3. Override individual settings:勾選此設定,才可以覆蓋各 Form 現有的設定
  4. Apply button:套用上述設定
  5. Set As Default button:把上述設定改為預設值,之後再新增 Form、Program 等時,就會套用此設定。

星期三, 10月 23, 2013

Office 2013 Picture Manager

品管小姐來詢問為甚麼 Office 2013 內沒有 Picture Manager,是不是沒有安裝上去,依自身安裝習慣,只要是 Office 軟體,一定是全部安裝,後來發現 Picture Manager 從 Office 2013 開始被拿掉了,Orz ~~
  • 官方說明
[Office] Office 2013 Picture Manager

星期一, 10月 21, 2013

[SSRS] 隔行換色

閱讀 MSDN SSRS RowNumber() 函數 時發現文章內的範例,動手實作並記錄

語法:RowNumber(scope)
參數:指定評估資料列數的範圍,可能為資料集、資料區域、群組名稱或 Nothing
  • DataSet T-SQL 語法
SELECT FirstName , LastName , EmailAddress , Phone 
FROM [Person].[Contact]

  • 設定介面
先利用精靈建立 Table 表格,並在前方建立一個由 RowNumber() 函數建立的序號欄位,方便驗證設定效果
  • 設定 BackgroundColor 運算式
Tablix 資料區域詳細資料列 => 屬性 => BackgroundColor => 運算式

設定運算式
= IIF(RowNumber(Nothing) MOD 2 = 0 , "LightGrey" , "White")
  • 預覽結果
  • 2013 DBA 天團

星期五, 10月 18, 2013

[SQL] OLE DB 提供者 Microsoft.ACE.OLEDB.12.0 尚未註冊

論壇問題
使用 OPENROWSET() 來抓取 Excel 資料時,出現"OLE DB 提供者 Microsoft.ACE.OLEDB.12.0 尚未註冊" 的錯誤訊息,該如何註冊?

開啟伺服器選項 Ad Hoc Distributed Queries

使用 OPENROWSET 時,必須先開啟伺服器選項 Ad Hoc Distributed Queries 才可以使用,沒有開啟的情況下,會出現下面的錯誤訊息
SQL Server 已封鎖元件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 之存取,因為此元件已經由此伺服器的安全性組態關閉。系統管理員可以使用 sp_configure 來啟用 'Ad Hoc Distributed Queries' 的使用。如需有關啟用 'Ad Hoc Distributed Queries' 的詳細資訊,請在《SQL Server 線上叢書》中搜尋 'Ad Hoc Distributed Queries'。
有兩種開啟方式
  • SSMS 內開啟:Instance => 右鍵 Facset => 介面區組態 => AdHocRemoteQueriesEnable 設為 True
[SQL] OLE DB 提供者 Microsoft.ACE.OLEDB.12.0 尚未註冊-3
  • 利用 T-SQL 語法開啟
sp_configure 'show advanced options' , 1
reconfigure
GO 
sp_configure 'Ad Hoc Distributed Queries' , 1 
reconfigure
GO

星期一, 10月 14, 2013

[SSRS] 柏拉圖(Pareto Chart)

柏拉圖就是 80/20 法則的圖表應用,在品管上常用來顯示不良率,為舊品管七大手法之一。
  • DataSet T-SQL 語法
USE [AdventureWorks2012]
GO 

IF OBJECT_ID('QC') IS NOT NULL
    DROP TABLE QC

CREATE TABLE QC (Question nchar(20) , Qty int , Line numeric(3,2))
INSERT INTO QC VALUES
    (N'馬達運轉異常' , 38 , 0.8) ,
    (N'馬達異因' , 22 , 0.8) ,
    (N'運輸撞傷' , 6 , 0.8) ,
    (N'鰭片間距不良' , 0 , 0.8) ,
    (N'銅管凹陷' , 2 , 0.8) ,
    (N'組裝不良' , 17 , 0.8) ,
    (N'洩漏' , 3 , 0.8) 

星期五, 10月 11, 2013

[SQL] 利用 sqlcmd 建立 Login

在測試環境練習時,一時手殘竟然把唯一的 Login 給刪除掉,再加上 sa 根本就沒有開啟,導致完全無法進入和操作 SQL Server 的窘境。

模擬錯誤發生
  • 刪除唯一的 Login Win2008R2\Administrator
[SQL] 利用 sqlcmd 建立 Login-1
  • 利用 SSMS 嘗試登錄 SQL Server
[SQL] 利用 sqlcmd 建立 Login-2
  • 無法登錄
[SQL] 利用 sqlcmd 建立 Login-3

星期一, 10月 07, 2013

[SSRS] 彙總函數 RunningValue

在 T-SQL 中要做到累計加總(Running Total)的功能,可以透過 Window 函數來達到,而在 SSRS 中,則是可以利用彙總函數 RunningValue。

語法:RunningValue(expression, function, scope)
參數:
  1. expression:要進行彙總的目標,通常都是欄位
  2. function:要使用的彙總函數,EX:SUM()、AVG()、COUNT()、COUNTDISTINCT()
  3. scope:彙總範圍,可能為資料集、資料區域或群組名稱
  • DataSet T-SQL 語法
USE [AdventureWorks]
GO

IF OBJECT_ID('SalesCase') IS NOT NULL
  DROP TABLE SalesCase

CREATE TABLE SalesCase (SalesName nvarchar(10) , Product nvarchar(100) , Price money)
INSERT INTO SalesCase VALUES
  (N'張三' , N'SQL Server 2012' , 350) ,
  (N'張三' , N'Report Service 2012' , 400) ,
  (N'張三' , N'Big Data' , 500) ,
  (N'李四' , N'ASP.NET' , 333) ,
  (N'李四' , N'HTML 5' , 444) ,
  (N'李四' , N'CSS & HTML' , 200) ,
  (N'李四' , N'Visual Studio 2012' , 345) ,
  (N'王五' , N'Powershell' , 513)

  • 設計界面
先利用精靈建立 Table 表格,設定 SalesCase 群組並在最後新增 RunningValue 欄位
  • 文字方塊運算式
RunningValue 文字方塊的運算式,輸入下列運算式
=RunningValue(Fields!Price.Value,SUM,"SalesName")
  • 預覽結果

星期五, 10月 04, 2013

[SQL] 避免隱含式轉換

在論壇上看見這樣的 WHERE 篩選條件
AND CAST(dbo.SalaryMonth.SalaryYear - 1911 AS nvarchar(3)) + RIGHT(CAST(dbo.SalaryMonth.Month + 100 AS nvarchar(3)), 2) = 10209
其問題在於這篇 [SQL] WHERE 中的資料篩選 所說不要對日期欄位進行轉換,還有另一個問題是隱含式轉換,所謂隱含式轉換是指兩個不同資料形態進行比較,資料型態彼此相容,因此 Query Optimizer 會自動對資料型態進行轉換,轉換成相同資料型態後才會進行比較,這也會產生效能問題,要盡量避免。

資料型態優先順序(MSDN 內容)
當一個運算子結合兩個不同資料類型的運算式時,資料類型優先順序的規則,會指定將低優先順序的資料類型,轉換為高優先順序的資料類型。 如果轉換不是支援的隱含轉換,就會傳回錯誤。 如果這兩個運算元運算式的資料類型相同,則作業結果就含有該資料類型。

SQL Server 會使用下列優先順序:
  1. 使用者自訂資料類型 (最高)
  2. sql_varian t
  3. xml
  4. datetimeoffset
  5. datetime2
  6. datetime
  7. smalldatetime
  8. date
  9. time
  10. float
  11. real
  12. decimal
  13. money
  14. smallmoney
  15. bigint
  16. int
  17. smallint
  18. tinyint
  19. bit
  20. ntext
  21. text
  22. image
  23. timestamp
  24. uniqueidentifier
  25. nvarchar (包括 nvarchar(max) )
  26. nchar
  27. varchar (包括 varchar(max) )
  28. char
  29. varbinary (包括 varbinary(max) )
  30. binary (最低)