Most popular

วันศุกร์ที่ 2 พฤศจิกายน พ.ศ. 2555

C# + Crystal report แก้ปัญหา new ReportDocument() ไม่ได้

จากที่ไม่ได้เขียน Blog มาระยะนึงเพราะงานเริ่มซา ไม่มีปัญหาอะไรน่าตื่นเต้น
พอมาวันนี้งานเข้า อยู่ดีๆเครื่องก็โหลดไฟล์ Crystal report ไม่ได้ ทั้งๆที่เครื่องใช้มา 2 ปีกว่าแล้ว
เป็น runtime error พอรันแล้วเกิด error message ว่า

"Creating an instance of the COM component with CLSID {98385103-11A3-4AB9-A629-91B275085F43} from the IClassFactory failed due to the following error: 80040154"

ซึ่งเกิดจากบรรทัดที่มีการสร้าง Object ของ ReportDocument ตามภาพ


เป็นด้วยสาเหตุใดก็ไม่ทราบได้ แต่หาข้อมูลจาก อากู๋ (Google) แล้วได้ความว่าให้เข้าไปหาไฟล์ติดตั้งใน Path "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5"
เครื่องผมเป็น Multi OS ลง Windows ใน Drive I: ในที่สุดก็เจอ


จากนั้นผมก็คลิ๊กขวาทำการติดตั้งซ้ำ


แค่นี้ก็เรียบร้อย เป็นอันใช้งานได้เหมือนเดิม
ทีแรกก็นึกว่าจะเป็นเรื่องใหญ่ เผลอใช้โปรแกรมไป Clean อะไรรึป่าว ตกใจหมด

วันพุธที่ 3 ตุลาคม พ.ศ. 2555

ตรวจสอบค่า NULL กับ DataRow โดยใช้ DBNull

การตรวจสอบค่า Null ซึ่งเป็นค่าว่างเปล่า ง่ายๆ

ตัวอย่างค่า NULL
ในบางครั้งเราอาจจะคิดว่าค่า NULL ก็คล้ายๆกับค่าว่างธรรมดา "..." หรือ blank แต่ค่าว่างในภาษาโปรแกรมนั้นหมายถึงค่าที่เป็นตัวอักษรหรือ String เท่านั้น แต่ค่า NULL ในที่นี้จะอยู่ใน Record ที่เป็น Type ใดก็ได้ ไม่ว่าจะเป็น Int , Double หรือ Varchar และอื่นๆอีกมากมายแล้วแต่ชนิดของ Database

จึงต้องตรวจสอบต่างจากค่าว่าง การตรวจสอบค่าว่างของ Field ที่เป็นตัวอักษร เช่น

if(DataTable["REGISTER"][0]["NAME"].ToString().Trim()=="")
{
     //ค่าใน Field NAME เป็นค่าว่างจริง
}

แต่ตัวอย่างในการตรวจสอบค่า NULL จะต่างออกไป เช่น

if(DataTable["REGISTER"][0]["AGE"]==DBNull.Value)
{
     //ค่าใน Field AGE ซึ่งเป็น Field ตัวเลขจำนวนเต็ม ไม่มีค่าจริง
}