บทความ

กำลังแสดงโพสต์จาก กุมภาพันธ์, 2010

HiPortfolio Notification Code

จาก ที่เคยบอกเอาไว้เรื่อง Code ระบบ HiPortfolio Notification ตามสัญญาครับ Code นี้ เป็น Code ที่สามารถใช้งานได้จริง บนระบบ Production ที่ผมดูแลอยู่นะครับ Compile ด้วย Microsoft Visual Studio 2008 Professional เชื่อมต่อกับระบบ HiPortfolio Version 3.7 ซึ่ง Code ของ ระบบ HiPortLogService นี้ ผมได้ Modify เพิ่มโดยมีการ อ่าน Application Log ของระบบ ที่เชื่อมต่อกับระบบ HiPort มาอยู่ในระบบด้วย ดังนั้น Code นี้จะมีการ Alert 2 ระบบ คือระบบ HiPort และ ระบบ เชื่อมต่อ ท่านสามารถ นำ Code นี้ไปใช้งานได้ ปรับแต่งได้ ในลักษณะ OpenSource ครับ ใน License แบบ CPOL ( Code Project Open License ) ตาม Link เลยครับ http://www.codeproject.com/KB/cs/HiPortfolioLogService.aspx

ปัญหา Custom Paper Size บน Crystal Report

ก่อนจะ แปะ code HiPortfolio Service ผมพบปัญหา อันใหญ่ อันหนึ่ง นั่งแก้ปัญหา มาหลายอาทิตย์ จนต้องถอดใจ เปลี่ยนไปใช้ Report Viewer ของ Microsoft แทน Crystal Report เรื่องของเรื่องคือ โปรแกรมที่ผม พัฒนาเป็น Windows Application ใช้ Crystal Report 2008 เป็น Engine ในการทำ Report ทั้งหมด Report ปกติ ก็จะใช้กระดาษ A4 เป็นหลัก ไม่มีปัญหาอะไร แต่พอเดือนที่แล้ว ได้มีการเพิ่ม Function Print ใบเสร็จ ซึ่งต้อง ใช้กระดาษ เป็น Custom Form (ขนาดกระดาษ กว้าง 8.5 inch สูง 7 inch แนวกระดาษ เป็น Portrait )เนื่องจาก เป็น กระดาษต่อเนื่อง และเป็น Form ของใบเสร็จซึ่งมีขนาด ไม่มาตรฐาน ผมใช้เวลา กับมัน ประมาณ 3 สัปดาห์พบว่า Design Report บน Crystal Designer แล้ว Preview และ Print บนกระดาษได้ ไม่มีปัญหาใดๆ แต่พอLoad Report เข้ามาแสดงที่ Program ด้วย Object Crystal Report Viewer 2008 บน Program ที่เขียนขึ้น กลับพบปัญหาว่า 1. เวลาสั่งพิมพ์ออกมา ที่ Printer ซึ่งเป็น Dot Metrix EPSON LQ-2180 ผลลัพธ์ บนกระดาษ กลับ แสดงผบเป็น Landscape 2. ผมเพิ่ม Code บังคับให้แสดงผลออกเป็น Portrait ด้วยการส่ง parameter ไปให้ repor...

HiPortfolio Email notify Service when Privilege User Access #3

รูปภาพ
สวัสดีครับ คราวนี้มาว่ากันต่อในส่วนของ การ Coding ใน ส่วนของ C# นะครับ สร้าง Project ขึ้นมา เป็น Type Windows Service ครับ แล้วให้ท่าน Click ที่ Object ในส่วนที่ เป็น Service1.cs ที่ หน้าต่าง Project Explorer จะได้ หน้าต่าง สีเทา มา ทำการ Drag Object EventLog และ FileSysemWatcher มาวางไว้ บน หน้าต่างสีเทา ที่ Project Explorer ทำการ Add new Item ในส่วน Application Configuration file เข้ามา ทำการ ใส่ Configuration ที่จะให้ Service ทำงาน เสร็จแล้ว มาดูในส่วน การ Coding กันนะครับ โดย Click ขวาที่ว่าง แล้ว เลือก View Code ใน Code เราจะมี ส่วนหลักๆ ที่ต้องทำคือ 1. Add Library ที่เกี่ยวข้องเข้ามาใน code โดยประกาศ ที่ using 2. ตอน Initial Service ให้ Service ทำการ อ่าน Configuration จาก file config เข้ามา ให้กำหนด ใน Constructure (ต่อจาก Initialize()) ซึ่งใน Config file จะมีการระบุ ตำแหน่ง ที่ จะ monitor เอาไว้ว่า log ออกมา ที่ Folder ใด 3. ให้ Code เพิ่มในส่วน Event ของ fileSystemWatcher1_Changed ทำการ ดักว่า ไฟล์ ที่ออกมามีการ เปลี่ยนแปลง ให้ทำการ อ่าน log แล้วแปลง String 4. นำ String ที่ได...

BindingSource.Find on Relational BindingSource

ปัญหา คือ ให้ Method Find บน BindingSource Object ไม่ได้ กรณี ที่ Datasource เป็น Relational Binding เช่น มี Form ที่เป็นลักษณะ Master / Details อยู่ Order_Master กับ Order_Details ที่ตาราง Details จะไม่สามารถใช้ Method Find ได้ มันจะ ฟ้องว่า Can not file Column ประมาณว่า ไม่สามารถ หา Column นั้นเจอ วิธีการคือ ใช้ PropertyDescriptorCollection มาช่วย คือ PropertyDescriptorCollection probdec = OrderDetailBindingSource.CurrencyManager.GetItemProperties(); int pos = OrderDetailBindingSource .Find( probdec [ "OrderId" ],idforFind); if (pos >= 0) OrderDetailBindingSource .Position = pos; เท่านี้ ก็สามารถ หาโดยใช้ Method Find ใน BindingSource ที่เป็นตัว Details ได้แล้ว

HiPortfolio Email notify Service when Privilege User Access #2

รูปภาพ
มาว่ากันต่อจาก คราวที่แล้วครับ ทราบ Concept กันแล้ว มาดู diagram กันครับ จากระบบ HiPort ให้สร้าง Console Job ให้ Slave Engine Run Report System Log ออกมา แล้วให้ Service ไป monitor Report Output folder ว่ามีไฟล์ออกมาหรือยัง ถ้ามีไฟล์ออกมา ให้อ่านไฟล์ ที่ออกมา แปลงเป็น format ที่อ่านรู้เรื่อง แล้วส่ง email โดย อ่านจาก ไฟล์ config สำหรับตอนหน้า มาดู Code กันเลยครับ