บทความ

กำลังแสดงโพสต์จาก กันยายน, 2009

ฺฺBuild Install by Click One

เนื่องจากผมใช้ ClickOne ในการ Deploy Program เพราะว่ามัน ง่ายดี แค่ Click ๆ ไม่กี่ Click ก็สามารถ Deploy โปรแกรมได้แล้ว แถมยัง มีการ Check Update Version ด้วยว่า โปรแกรม เป็น Version ปัจจุบันหรือไม่ ถ้าไม่ ก็สามารถ Update Program เป็น Version ปัจจุบันได้ แต่ปัญหาที่เจอ คือ เมื่อ Deploy ไปที่ Server1 (ศูนย์หลัก ซึ่งอยู่ที่ site 1) แล้ว เวลาไป Install ที่ Site สำรอง ถึงแม้ว่า จะนำไฟล์ไปวางไว้ที่ Server2 (site สำรอง) แล้วเรียก มัน ก็ยัง ไป point อยู่ ที่ Server1 เหมือนเดิม เข้าใจว่าใน Configuration ของ ClickOne จะระบุไว้อย่างนั้น ผมเลยแก้ปัญหาด้วย วิธี สร้างเป็น Setup Project ขึ้นมา จะได้ file setup ที่ นำไปวาง ไว้ที่ site ไหนก็ได้ ก็สามารถ Install ได้ แต่ก็มีข้อเสียคือ ไม่สามารถ ทำ Auto Update ได้ ง่ายๆ เหมือน ClickOne

divide by zero fixed บน crystal report

่ในบางครั้ง ที่ต้องเขียน fomular field บน crystal report ผมว่าก็มีหลายครั้ง หรือโดยส่วนมาก เราก็ต้องใช้มัน และ หนีไม่พ้นต้องใช้สูตร คณิตศาตร์ พื้นๆ นี้แหละ เช่น บวก ลบ คูณ หาร ในวันนี้ผม จะมาเตือนให้ ท่าน programmer ทั้งหลาย อย่าลืม ดัก error divide by zero ด้วย นะครับ มีหลายครั้งที่ทดสอบรายงานออกมาแล้ว ใช้งานได้ แต่พอไปเจอ งานจริง กลับทำงานไม่ได้ เพราะว่าข้อมูล ตัวหาร เป็น ศูนย์ ก็เลย เจอ error ซะงั้น ทางที่ดี ถ้าเรารู้ว่า มีสูตรหาร ใน fomular field ก็แนะนำให้มีการดัก devide by zero ทุกครั้งนะครับ ยกเว้นแต่ว่า คุณจะทราบดีว่าข้อมูลตัวหารในสูตร จะไม่มีทางเป็น ศูนย์ ได้เลย ตัวอย่างสูตรที่พบบ่อยๆ เช่น percent of total = value / sum(value,date) กรณีีนี้ โอกาสที่ total จะเป็น zero นั้น ก็ เป็นไปได้ครับ ถ้า value เป็นทั้ง บวกและลบ แต่ถ้าต้องการ fixed ก็ ดักค่าตัวหารก่อน เช่น if (sum(value,date) 0) then percent of total = value/sum(value,date) else percent of total = "divide by zero" เป็นต้น

Crystal Report หาจำนวนวันในเดือนนั้น อย่างไร

เบื้องต้น เป็นแบบนี้ครับ ใช้ function Datediff ครับ DateDiff ( intervalType , startDateTime , endDateTime ) ใส่ intervalType เป็น d (หมายถึง วัน) startDateTime เป็น วันที่ 1 ของเดือนนี้ endDateTime เป็น วันที่ 1 ของเดือนหน้า ส่วนวิธี ได้มาซึ่ง วันที่ 1 เดือนนี้ใช้ Function DateSerial ( year , month , day ) และ DateAdd ( intervalType , nIntervals , startDateTime ) ช่วย ใช้ IntervalType = m คือเดือน เช่น วันที่ 1 เดือนนี้ d1= DateSerial (YEAR(CurrentDate),MONTH(CurrentDate ),1) วันที่ 1 เดือนหน้า d2= DateAdd (m,1,d1) ส่วน จำนวนวัน dcount= DateDiff (d,d1,d2) แค่นี้ครับ

Can not Start Application

รูปภาพ
กรณีที่ท่านใช้ ClickOne ในการ Deploy Application แล้ว เมื่อ เปิดโปรแกรม เจอ Dialog บอกว่า Can not Start Application. Contact Application Vendor ตามรูปคือ โดยมี รายละเอียด จากการกดปุ่ม Detials... คล้ายๆ กันนี้คือ PLATFORM VERSION INFO Windows : 5.1.2600.196608 (Win32NT) Common Language Runtime : 2.0.50727.1433 System.Deployment.dll : 2.0.50727.1433 (REDBITS.050727-1400) mscorwks.dll : 2.0.50727.1433 (REDBITS.050727-1400) dfdll.dll : 2.0.50727.1433 (REDBITS.050727-1400) dfshim.dll : 2.0.50727.1433 (REDBITS.050727-1400) SOURCES Deployment url : file:///C:/Documents%20and%20Settings/user1/Desktop/App.appref-ms Deployment Provider url : file://Server/App/Install/App.application ERROR SUMMARY Below is a summary of the errors, details of these errors are listed later in the log. * Activation of C:\Documents and Settings\user1\Desktop\App.appref-ms resulted in exception. Follow...

เรื่องของ อาการภูมิแพ้

ผมเป็นคนหนึ่ง ที่เป็นภูมิแพ้, แพ้อากาศ เวลาอากาศ เปลี่ยนแปลงอย่างรวดเร็ว หรือ เราไปอาศัยอยู่ บริเวณ ที่มี ฝุ่น หรือ ควัน หรือละอองในอากาศ จำนวนมาก ก็ทำให้อาการ กำเริด ขึ้นมาทันที อาการคือ มี น้ำมูกใสๆ ไหล ออกมา เรื่อยๆ รวมถึงมีอาการ ไอ หรือ จาม ได้ แสบจมูก ไปจนถึง ปวดบริเวณ หัวคิ้ว ขมับ ไปจนถึง ปวดหัว ได้ ถ้าปล่อยไว้นาน ก็จะทำให้เกิดอาการ จมูกอักเสบ หรือ ไซนัสอักเสบได้ ไปหาหมอก็ให้ยา แก้แพ้มา และ ยาพ่นจมูก แต่ เท่าที่เคยใช้กับตัวเองมาคือ ใช้ยา Zyrtec (กล่องสีเหลือง) เป็นยาเม็ด ทานวันละ 1 เม็ดเมื่อมีอาการ ทานแล้ว จะลด อาการ ได้เกือบทันทีที่ยาออกฤทธิ์ คือ พอทานแล้ว ก่อนทานมีน้ำมูกไหล หลังทาน น้ำมูกจะหยุดไหลทันที และอาการแพ้อื่นๆ ก็หมดไปด้วย เอาเป็นว่าผมต้องซื้อยานี้ ติดตัวไว้เลย พอมี อาการ ก็ หยิบมา ทานได้ทันทีครับ เป็นอะไรที่อยากแนะนำครับ ยาของเค้าดีจริงๆ ถึงแม้จะแพงไปหน่อยครับ แต่ก็คุ้มครับ สำหรับผม

ปัญหาเด็ก กลืน ดินน้ำมัน

ท่านเคยเจอปัญหา นี้บ้างไหม เด็ก เล็ก อายุ 3-5 ขวบ กลืนดินน้ำมัน ปัญหาคือ ในดินน้ำมัน นั้น ล้วนประกอบไปด้วยสารเคมี ซึ่งเป็นพิษต่อร่างกายได้ โดย ส่วนประกอบของดินน้ำมัน (อย่างง่าย)ได้แก่ 1. ดินสอพอง 240 กรัม 2. น้ำมันเครื่องเบอร์ 50 (ยังไม่ได้ใช้) จำนวน 30 ลูกบาศก์เซนติเมตร 3. พาราฟินแข็ง 40 กรัม 4. สีผง (สีน้ำมันผลจะดีที่สุด) 5. ตะเกียงแอลกอฮอล์ 6. บิกเกอร์ 7. ขันน้ำ วิธีทำ 1. บดดินสอพองกับสีผงให้ละเอียด คลุกเคล้าให้เข้ากัน ร่อนเอาผงละเอียดใส่ในขัน 2. เอาพารฟินใส่บิกเกอร์ ให้ความร้อนจนหลอดละลาย ยกวางบนพื้น 3. เทน้ำมันเครื่องลงในพาราฟินเหลว คนให้เข้ากัน แล้วเทลงในชันที่มีดินสอพองผสมสี ที่เตรียมไว้คนให้เข้ากัน แล้วใช้มือนวดจนผสมกันทั้งก้อน 4. ตั้งทิ้งไว้ 1 คืน วันรุ่งขึ้นนวดต่ออีกครั้ง ท่านสังเกตส่วนประกอบแล้ว โดยเฉพาะอย่างยิ่ง น้ำมันเครื่อง หรือ สี นั้น ล้วน เป็นอันตรายต่อร่างกาย ทั้งนั้น ท่านคงเคยได้ยินข่าวเด็ก กินน้ำมันเครื่องแล้ว ทำให้พัฒนาการของสมอง และร่างกายลดลง นะครับและการกลืนกินเจ้าดินน้ำมันเข้าไป โดยไม่รู้เรื่อง หรือ ทำไปด้วยด้อยประสบการณ์นั้น ยังอาจทำให้เจ้าดินน้ำมัน ไปอุดตันภา...

แก้ปัญหา Rubik 3 x 3

ขอเบรค เรื่อง programming ไว้สักพักนะครับ ขอ เป็นเรื่องงานอดิเรกบ้าง ว่างๆ ก็ เอา rubic มา นั่งเล่น ดูครับ ก็คลายเครียดไปอย่างครับ จากตัวอย่างที่เล่น จะเป็นสูตร ยอดนิยมครับ คือสูตรง่าย แต่ก็เล่นเรื่อยๆ ลองฝึกฝีมือดู ยังไงก็เกิน 3 นาทีครับ ฝีมืออย่างผม ถือว่า ยังเริ่มต้นอยู่ครับ พยายามฝึกให้เร็วกว่านี้ อีกครับ ใครที่ไม่เคยเล่นก็ลอง ไปซื้อเอามาเล่นดูครับ ส่วนใหญ่ ราคาเริ่มต้น ไม่ถึงร้อยบาทครับแถมสูตรให้ด้วย แต่ถ้าอยากเป็นเร็ว ก็ไปซื้อหนังสือมาอ่านครับ อ่านแล้วก็แก้ได้ แต่ แก้ได้เร็วนั้น ต้องอาศัยการฝึกฝนครับ

Sub Version บน Visual Studio 2008

Sub Version คือ อะไร Subversion เป็น Tools ในการใช้เก็บ Source Code ในการพัฒนา และมีระบบควบคุม การเปลี่ยนแปลง หรือ Version Control ให้กับ Code จะมีประโยชน์มากในการ พัฒนา ร่วมกัน หรือแม้แต่พัฒนาคนเดียวก็มีประโยชน์ อย่างน้อยก็ ช่วยบันทึก การเปลี่ยนแปลงของ Code ได้ว่า มีการแก้ไข หรือทำอะไรไปบ้างในแต่ละ Version หลักการคือ มีการเก็บข้อมูลการเปลี่ยนแปลงไว้ใน ฐานข้อมูล เรียกว่า Repositary หรือ อธิบายได้ง่ายๆ เหมือนกับ สินค้า นำสินค้าต้นฉบับมาเก็บไว้้ที่คลัง (Original Code) เมื่อนักพัฒนาต้องการ พัฒนาเพิ่ม ก็มีการมาเบิกสินค้าออกไป เรียกว่า CheckOut และระหว่างที่พัฒนา อาจจะมี Code หรือไฟล์ เพิ่มขึ้นมาจากต้นฉบับ ก็สามารถ เพิ่มเข้าไปที่ Repositary ได้ เรียกว่า Add เมื่อนักพัฒนา ทำการพัฒนาเสร็จแล้ว ก็ทำการ ส่งส่วนที่พัฒนาเพิ่มเติม กลับเข้าไป ที่คลังสินค้า เรียกว่า Commit หรือ เมื่อ ทำการทดสอบโปรแกรมแล้ว ปรากฎว่า ไม่ถูกต้องตามความต้องการก็สามารถยกเลิก Code ที่เขียนเพิ่มไปได้ (Undo ย้อนกลับไป แม้ว่าจะ Save แล้วก็ตาม) หรือ เรียกว่า Revert ซึ่งในการพัฒนานั้น ถือว่าเป็นประโยชน์มากๆ ทีนี้มาดูกันว...

การ save source file ไว้บน Network Visual C# 2008

รูปภาพ
ปกติ ที่ผมเคยพัฒนาโปรแกรม บน Windows ด้วย Visual C# นั้น ผมจะ Save Project File ไว้ตาม Default เสมอก็คือ My Documents\Visual Studio 2008\Projects การใช้งาน บน Local ก็ไม่มีปัญหาอะไร เพราะว่าทำงานคนเดียวอยู่ แล้ว แต่พอ project ใหญ่ๆ ต้องทำงานหลายคน จะต้อง เอา project file ไปไว้ที่ Network Drive ปัญหาที่เจอก็คือ ไม่สามารถเปิด project ได้ครับ เนื่องจากว่าติืดสิทธิ ประมาณว่า ไม่ผ่าน Security Policy ของ .NET ดังรูป ปัญหาดังกล่าวเกิดจาก Security Policy ของ .NET สิ่งที่เราต้องทำคือ บอกให้ .NET รู้ว่า ให้อนุญาติโปรแกรมของเราสามารถเรียกจาก Network Share ได้ สิ่งที่ต้องทำคือ 1. ทำการ Sign Assamblies เพื่อสร้าง รหัส Private Key ให้กับ Program โดยไปที่ Project Properties แล้วเข้าำไปที่ Signing แล้ว Check ที่ Sign the ClickOnce Manifests กรณีไม่เคยมี ก็ สร้าง โดย Click ที่ Create Test Certificate.. หรือถ้ามี Key แล้ว ก็เลือก โดย Select from Store.. (ขั้นตอนดังกล่าว ทำใน Local Drive นะครับ) เสร็จแล้ว ก็ ทำการ Save Project แล้ว นำไปวางไว้บน Network Drive ทำการ Set Permissionให้เรียบร้อย จากนั้น ก็ ใ...

เพิ่ม Speed ให้ Crystal Report 2008

รูปภาพ
เนื่องจาก ผมก็เป็นคนหนึ่งที่พัฒนา โปรแกรม บน Windows และก็ใช้ Crystal Report เนื่องจากเป็น Report Tools ที่ใช้งานค่อนข้าง ง่าย และ Powerful เลยทีเดียว บอกไว้ก่อนว่า ผมใช้ Tools ในการพัฒนาคือ Visual C# 2008 และ Crystals Report 2008 แต่สิ่งที่ ผมพบปัญหา เล็กๆ น้อยๆ คือ เวลาที่ ใช้ report object ทำการ load Report โดยใช้ Method report.Load("reportfile.rpt") จะใช้เวลานานในการ Load มากๆ เนื่องจาก ในโปรแกรมจะมี Report หลายตัว จะใช้ตัวไหน ก็ Load ตัวนั้น ยิ่ง Report มี Item ภายในมากเท่าไหร่ ยิ่งโหลดนานเท่านั้น ที่ว่าโหลดนานคือ (ประมาณ 20-30 วินาที) ซึ่งนานเกินไป ผมใช้เวลาทดสอบ แก้ปัญหาอยู่นานหลายวัน กว่าจะ เพิ่มความเร็ว ในการ Load Report ได้ โดย การ Load เร็วขึ้น เหลือประมาณ (5-10 วินาที แล้วแต่ขนาดของ LayOut และ จำนวน Item) ผมขอสรุปการแก้ปัญหา ดังนี้คือ 1. ไม่ Save Data ไว้ในไฟล์ Report ให้เก็บเฉพาะ LayOut ไว้เท่านั้น ให้เข้าไปที่เมนู File Report Option แล้ว Clear CheckBox Save Data With Report 2. Datasource ที่ส่งให้ Report ให้เป็น oledb 3. กรณีมีรูปใน Report ให้ ทำการ Resize รูปก...

สร้าง Help File ให้กับ Program

พอพัฒนาโปรแกรมเสร็จ ก็ต้องจัดทำ Document หรือ คู่มือ, Manual, ถามว่าจะทำอย่างไร ให้ Integrate เข้าไปใน Program ได้เหมือนๆ กับ Program ที่เค้าทำขายกัน เท่าที่ได้ลองทำคือ ต้องทำเป็น HTML Help (.chm) เป็น รูปแบบที่ Microsoft ได้จัดทำขึ้น โดยวิธีการ คือเราก็ทำ Document ของเรา ในรูปแบบ Word Document ก็ได้ พิมพ์ จัด content ให้เรียบร้อย แล้วก็ใช้ HTML Help Workshop (ไป Downloads มาก่อน ที่ Microsoft) http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc ทำการ Compile ผลที่ได้คือ File .chm นำมา Integrate เข้ากับ Application ของเราอีกครั้ง และที่ผมเจอ Tools ที่ถูกใจอีกตัวคือ HelpNDoc เป็น Tools ที่ค่อนข้าง Powerful เลยทีเดียวในการสร้าง Help Documents สามารถสร้าง Output เป็น .chm, html, .doc หรือ .pdf ได้เลย มีตัว Free Edition ให้ใช้ด้วยครับ (แต่มี Footer กวนใจเล็กน้อย ว่าเป็น ตัว Free) ถ้าไม่ Serios ก็ ใช้ได้ครับ http://www.helpndoc.com/ วิธีการ Integrate เข้ากับ Program ผมใช้ั IDE คือ Visual Studio 2008 ภาษาในการพัฒนาคือ C# Micosoft ...