บทความ

กำลังแสดงโพสต์จาก มกราคม, 2010

HiPortfolio Email notify Service when Privilege User Access

พอดี เป็น Project ที่เพิ่ง ทำเสร็จ ครับ เขียนด้วย C# โดยการทำงาน Run เป็น Windows Service จะเล่า User Requirement ให้ ฟังก่อน ครับ ความเป็นมาเริ่มจาก ที่มี IT-Auditor จากภายนอก(กลต.) ได้ส่งเอกสารเกี่ยวกับ มาตรฐาน ของระบบงาน IT เพื่อให้เป็นไปตามกฎเกณฑ์ มี ข้อหนึ่งที่บอกว่า - ให้ระบบงานมีการบันทึก Log การใช้งานของ Privilege User (Has Log Privilege Access) - และมีการตรวจสอบ Log เป็นประจำ (Review Log regularly) ก็เลยเกิด Project นี้ขึ้นมา ระบบที่ ผมดูแลอยู่ ในที่นี้ คือ ระบบ HiPortfolio ซึ่งโดยระบบแล้วสามารถเข้าไป อ่าน Activity Log ได้อยู่แล้ว แต่ปัญหา คือ ต้องการให้ระบบ HiPortfolio ส่ง Email ไปให้ผู้เกี่ยวข้อง เมื่อ มีการใช้งาน Privilege User ซึ่ง ระบบ HiPortfilio ไม่สามารถ ทำได้อยู่แล้ว สิ่ง ที่ Project นี้ ทำ คือ 1. สร้าง Job Schedule (Console Job) ให้ Hiportfolio Run Report Activity log โดย Slave Engine จะได้ File Report Activities ออกมา โดยระบุ ตำแหน่ง Folder ที่ชัดเจน 2. สร้าง Windows Service ที่ไป monitor folder นั้น ด้วย C# และใช้ fileSystemWatcher Object เมื่อพบการเปลี่ยนแปลง ของ ...

Function Row_Number() (ต่อ)

คราวที่แล้ว ว่า ไปถึงตัวอย่าง โจทย์ แล้วนะครับ คราวนี้ มาทำความเข้าใจถึง วิธีการกันครับ ที่ผมว่า ตาราง สอง ตาราง มีความสัมพันธ์ กัน ตามโจทย์ คือ CustomerID และ ครั้งที่ (จะหมายถึง Record ที่) ใน Database นั่นเอง ถ้ากำหนดให้ การ Key ข้อมูล ต้องเรียงตามลำดับ จาก ก่อนไปหลัง หรือเรียงลำดับตามวันที่ แบบ ascending นั้นเอง แต่ เนื่องจาก Field ลำดับที่ไม่มี เราสามารถใช้ Function Row_number() (* เฉพาะ SQL 2005 ขึ้นไป) ในการสร้าง Logical Field นี้ โดย ผมจะสร้าง view ขึ้นอีก 2 views สำหรับเพิ่ม Field [No] ขึ้น ให้กับทั้งสอง ตาราง ดังนี้ -- สร้าง view สำหรับ CustomerRisk CREATE VIEW [app].[vCustomerRisk] AS SELECT TOP (100) PERCENT C.AccountNo, row_number() OVER(partition by C.AccountNo order by C.RiskDate ) AS [No], C.RiskDate , C.RiskDate , C.RiskLevel FROM CustomerRisk ORDER BY C.AccountNo, C.RiskDate GO ผลลัพธ์ ของ view คือ CustomerID No RiskDate RiskLevel 1 1 15/1/2009 Level1 1 2 1/2/2009 Level1 ...

ใช้งาน Function Row_Number() บน SQL 2005

เขียนบทความแรก ของ ปีนี้เลยครับ พอดีว่า เพิ่ง เจอ โจทย์ มาสดๆ หมาดๆ ครับ เห็นว่าเป็นประโยชน์ดี เลย นำมา post ครับ ปัญหาที่เจอ คือ ทำรายงาน โดย นำข้อมูล 2 ตาราง มาแสดงใน รายงานเดียวกัน ฟังดูเหมือนไม่มีอะไร ข้อมูล มีดังนี้ ตาราง แรก CustomerRisk CustomerID RiskDate RiskLevel 1 15/1/2009 Level1 1 1/2/2009 Level1 1 15/2/2009 Level2 1 28/2/2009 Level3 2 15/1/2009 Level1 2 1/2/2009 Level1 ตาราง ที่ สอง CustomerProfile CustomerID ProfileDate ProfileDetail 1 15/1/2009 Detail1 1 8/2/2009 Details2 2 5/3/2009 Detail1 จะสังเกตุได้ว่า ตารางทั้ง 2 ตาราง เป็น ตาราง รายละเอียด ของลูกค้า นะครับ ซึ่ง ลูกค้า 1 คน อาจมี รายละเอียด หลายๆ record โดยที่ ทั้ง 2 ตาราง จะเก็บข้อมูลซึ่ง ไม่เกี่ยวกันเลย มีความสำพันธ์กัน แค่เพียง Field เดียว คือ CustomerID เท่านั้น ซึ่ง ทั้ง 2 ตารางจะ ไป Link กับ ข้อมูล ในตาราง Customer อีกครั้ง ผลลัพธ์ ที่ต้องการคือ ออกร...

Happy New Year

สวัสดีปีใหม่ ครับ สำหรับ ท่านที่เข้ามา ชม Blog อาจจะ ช้าไปหน่อย พอดี ปีใหม่ก็ หยุดไปหลายวัน ไม่ได้เข้ามาเขียน บทความเพิ่ม จริงๆ ผม มี plan ว่าจะ เขียน เรื่อง optimize crystal report 2008 on .NET WinForm อยู่ ครับ เป็น บทความที่ผม แปลมาจาก sap อีกครั้งหนึ่ง แต่พอดีว่า ผมยังแปลไม่เสร็จสักที ขอเวลาอีกหน่อยครับ พอดีว่า มันยาวเหมือนกัน แต่ถ้าท่านใดใจร้อน ก็ เอา version original ไปดูก่อน นะครับ ตาม Link เลยครับ http://www.sdn.sap.com/irj/boc/go/portal/prtroot/docs/library/uuid/8029cc96-6ff3-2b10-47a2-b30ea790ea5b?QuickLink=index&overridelayout=true