ปัญหาปวดหัวเมื่อใช้ Crystal Reports 2013 สร้างรายงาน JHCIS

เขียนโดย พงษ์พันธ์ ศิวิลัย

พงษ์พันธ์

ก่อนจะเข้าประเด็น ขอเกริ่นนำเกี่ยวกับ JHCIS ก่อนนะครับ …

JHCIS คือ ระบบงานโรงพยาบาลส่งเสริมสุขภาพตำบลและศูนย์สุขภาพชุมชน … หลายคนอาจจะส่งสัยว่า ศูนย์สุขภาพชุมชน คือ สถานีอนามัย ตามที่คนต่างจังหวัดเรียกกันนั่นแหละ

JHCIS เป็นโปรแกรม Open Source ไม่เสียค่าลิขสิทธิ์ใดๆ สามารถส่งออก 21 และ 43 แฟ้ม และส่งข้อมูล OP/PP Individaul ให้ สปสช.ได้ โปรแกรมนี้พัฒนาโดยทีมงาน JHCIS ของศูนย์เทคโนโลยีสารสนเทศและการสื่อสาร สำนักงานปลัดกระทรวงสาธารณสุข

JHCIS พัฒนาด้วยภาษา JAVA และเก็บข้อมูลโดยใช้ฐานข้อมูล MySQL ซึ่งเป็นฐานข้อมูลฟรี ( ฐานข้อมูลชื่อ JHCISDB ) สามารถใช้งานได้บนระบบปฏิบัติการทั้ง Windows 32 bits & 64 bits , Ubuntu สามารถดาวโหลดได้จากเวบไซด์ http://www.jhcis.net
ภายในโปรแกรมมีรายงานที่พร้อมให้ใช้งานอยู่ ทว่า รายงานเหล่านั้นอาจจะไม่พอกับความต้องการ ในกรณีที่ต้องการดูข้อมูลนอกเหนือจากที่มีมาให้ ดังนั้น จึงจำเป็นต้องสร้างรายงานเพื่อแสดงข้อมูลที่ต้องการขึ้นเอง

Crystal Reports จึงเป็นทางเลือกในการสร้างรายงาน …

… ทว่า ปัญหาดันมาเกิดเมื่อใช้ Crystal Reports 2013 ติดต่อฐานข้อมูล JHCISDB ด้วย ODBC ซึ่ง ODBC ชื่อ JHCISDB นั้นติดตั้งมาพร้อมกับโปรแกรม

JHCIS แน่นอนว่า สามารถใช้งานได้ 100 % แต่เมื่อ Crystal Reports 2013 เอามาใช้กลับเจอข้อผิดพลาด ในตอนที่จะเลือกตารางในรายงาน ดังรูปที่ 1

รูปที่ 1 ข้อผิดพลาดเมื่อเลือกใช้ตาราง

ทั้ง ๆ ที่ ODBC ตัวนั้นเป็นตัวเดียวกับที่โปรแกรม JHCIS ใช้งานและยังใช้งานได้อยู่ อีกทั้งตอนที่ติดตั้ง Crystal Reports 2013 ผมก็เลือกติดตั้งให้รองรับกับกับ MySQL แต่เมื่อจะใช้งานกับพบข้อผิดพลาดดังในรูปที่ 1 ซะงั้น ในเมื่อเจอปัญหา ครั้นจะยอมแพ้ก็ใช้ที่ … ต้องหาทางแก้ปัญหาให้สำเร็จให้จงได้!

หลังจากใช้เวลาหาหนทางอยู่พักหนึ่ง ในที่สุดก็พบในสิ่งที่ต้องการ … ทางแก้ปัญหา 2 วิธีนี้ ผมขออธิบายและยกตัวอย่างทั้ง 2 วิธี เพื่อให้ผู้อ่านเลือกเอาไปใช้ตามความเหมาะสมและความถนัดของแต่ละคน

วิธีที่ 1 : ติดต่อด้วย JDBC

ที่มานั้น มาจากโปรแกรม JHCIS พัฒนาด้วยภาษา JAVA อีกทั้ง Crystal Reports 2013 ก็รองรับการเชื่อมต่อด้วย JDBC ดังนั้น ถ้าใช้ JDBC ก็น่าจะสามารถทำได้สิ … ซึ่งมีขั้นตอน ดังนี้
1. เริ่มจากเข้าไปดาวโหลดไฟล์ mysql-connector-java-5.1.39 จาก https://dev.mysql.com/downloads/connector/j/

2. ขั้นตอนดาวโหลดจะต้องมีการสมัครสมาชิกและยืนยันผ่านอีเมล์เสียก่อน … ไม่ต้องคิดมาก! สมัครไปเถอะครับ สมัครฟรี

3. เมื่อดาวโหลดเสร็จแล้ว ให้แตกไฟล์แล้วก๊อบปี้ไฟล์ชื่อ mysql-connector-java-5.1.39-bin.jar ไปเก็บไว้ในโฟลเดอร์ที่ต้องการ ขอยกตัวอย่างเป็นโฟลเดอร์ชื่อ jconnector ดังรูป

รูปที่ 2 แสดงไฟล์ mysql-connector-java-5.1.39-bin.jar

4. ต่อไปเป็นการเข้าไปกำหนดให้ Crystal Reports 2013 รู้จักไฟล์ mysql-connector-java-5.1.39-bin.jar ของเรา ให้เข้าไปที่ C:Program FilesSAP BusinessObjectsSAP BusinessObjects Enterprise XI 4.0java อันเป็นที่เก็บไฟล์ CRConfig.xml ดังรูป

รูปที่ 3 แสดงไฟล์ CRConfig.xml

5. การแก้ไขไฟล์ข้างต้นต้องใช้สิทธ์ของ Administrator โดยเลือกดังรูป

รูปที่ 4 แสดงการเปิด Notepad ด้วยสิทธิ์ Administrator

6. เมื่อมีหน้าจอถาม ให้เลือก Yes  จากนั้น หน้าจอของ Notepad จะแสดง ให้เราคลิกเมนู File > Open แล้วเข้าไปที่ C:Program FilesSAP BusinessObjectsSAP BusinessObjects Enterprise XI 4.0java  เลือกไฟล์ CRConfig.xml เสร็จแล้วให้ เพิ่มข้อมูลไดเรกเทอรี่และไฟล์  mysql-connector-java-5.1.39-bin.jar ในส่วนของ   ซึ่งในที่นี้เป็น C:jconnectormysql-connector-java-5.1.39-bin.jar; ดังรูป

รูปที่ 5 แสดงการเพิ่มข้อมูลในไฟล์ CRConfig.xml

7. เลือกเมนู File > Save เพื่อบันทึก เท่านี้ Crystal Reports 2013 ก็สามารถใช้งาน mysql-connector-java-5.1.39-bin.jar ได้แล้ว ( ขั้นตอนข้อ 1-6 ให้ทำหลังจากติดตั้ง Crystal Reports 2013 แค่ครั้งเดียวเท่านั้น )

8. เรียกโปรแกรม Crystal Reports 2013 จากนั้นให้เลือกสร้างรายงานใหม่ ซึ่งขั้นตอนแรกสุดจะเป็นการเชื่อมต่อฐานข้อมูล ให้เข้าไปที่ Create New Connection เลือก JDBC (JNDI) ดังรูป

รูปที่ 6 แสดงการเลือก JDBC

9. ดับเบิลคลิกที่ JDBC ( JNDI ) หน้าจอกำหนดข้อมูลในการเชื่อมต่อจะปรากฏ ให้เรากรอกข้อมูลในส่วน Connection URL โดยมีรูปแบบ jdbc:mysql://ชื่อเครื่องหรือ IP:หมายเลข Port/ชื่อฐานข้อมูล ในที่นี้เป็น jdbc:mysql://jhserver:3333/jhcisdb  และกรอกในส่วน Database Classname เป็น com.mysql.jdbc.Driver ดังรูป

รูปที่ 7 แสดงการกรอกข้อมูลการเชื่อมต่อฐานข้อมูล

10. คลิกปุ่ม

หน้าจอกำหนด Username – Password จะปรากฏ ให้เราใส่ข้อมูลผู้ใช้งานและรหัสผ่านของฐานข้อมูล ขอยกตัวอย่างเป็นผู้ใช้งานชื่อ root ดังรูป

รูปที่ 8 แสดงการกำหนด Username – Password ในการเชื่อมต่อ

11. คลิกปุ่ม

เป็นอันเสร็จสิ้นขั้นตอนการกำหนดการเชื่อมต่อฐานข้อมูล เพียงเท่านี้เราก็สามารถเรียกใช้งานตารางในฐานข้อมูล เพื่อสร้างรายงานได้ตามที่ต้องการแล้ว ดังรูป

รูปที่ 9 แสดงการเพิ่มตารางในรายงาน

วิธีที่ 2 : ติดต่อด้วย ODBC

เชื่อว่า … มีหลายคนคงจะสงสัย ในเมื่อตอนแรกใช้ ODBC แล้ว Error ทำไมจึงคิดจะใช้อีก ?
แรกเริ่มเดิมที พอผู้เขียนสามารถใช้ วิธีที่ 1 แก้ปัยหาได้สำเร็จสมประสงค์ ผู้เขียนก็ไม่คิดจะหาวิธีอื่นอีกแล้ว แต่พอมาคิดอีกที วิธีที่ 1 ดูยุ่งยากและไม่สะดวกเท่าใดนัก ดังนั้น ผู้เขียนจึงเริ่มวิธีอื่นต่อไป … จนพบวิธีนี้ในที่สุด
สืบเนื่องจาก ODBC Driver ที่มากับโปรแกรม JHCIS เป็น เวอร์ชัน 3.51 ซึ่งค่อนข้างเก่า ผู้เขียนจึงคิดว่า ถ้าหากเป็น Driver ตัวที่ใหม่กว่าก็น่าใช้ได้ ซึ่งผลที่ได้ก็เป็นไปอย่างที่คิด เพื่อให้ผู้อ่านสามารถนำไปใช้งานได้ ดังนั้น ผู้เขียนจึงขอยกตัวอย่าง ดังนี้

1. เข้าไปดาวโหลด MySQL Connector for ODBC เวอร์ชัน 5.2.7 ที่ https://dev.mysql.com/downloads/connector/odbc/5.2.html ( มีให้เลือกทั้ง 32 bits และ 64 bits ให้เลือกดาวโหลดเฉพาะตัวที่ตรงกับระบบปฏิบัติการของเรา )

2. แน่นอนว่า พอเลือกดาวโหลด หน้าจอให้สมัครสมาชิกจะปรากฏ ในกรณีที่เคยสมัครไปแล้วให้เลือก Login

3. เมื่อดาวโหลดเสร็แล้ว ให้ทำการติดตั้งลงเครื่องของเรา ขั้นตอนก็ไม่มีอะไรมาก แค่คลิก Next ไปเรื่อย

4. เมื่อติดตั้งเสร็จ ให้เข้าไปที่ Control Panel > Administrative Tools > Data Sources (ODBC) เมื่อหน้าจอกำหนด ODBC ปรากฏ ให้คลิกที่แท็บ System DSN หน้าจอจะแสดง ODBC ที่มีอยู่ในเครื่อง ดังรูป

รูปที่ 10 แสดง ODBC ที่มีอยู่ในเครื่อง

จากรูปที่ 10 จะเห็นว่า มี ODBC ชื่อ jhcisdb อยู่ ซึ่งนั่นเป็น ODBC ที่ได้จากการติดตั้งโปรแกรม JHCIS ถ้าสังเกตดี ๆ จะพบว่า เป็น ODBC เวอร์ชัน 3.51

5. คลิกปุ่ม

  เพื่อสร้าง ODBC ใหม่ หน้าจอ Create New Data Source จะปรากฏ ให้เราเลือกที่ ODBC เวอร์ชัน 5.2 ที่เราเพิ่งติดตั้งไป ในที่นี้ขอเลือกตัวที่เป็น Unicode เพื่อให้รองรับกับทุกภาษา ดังรูป

รูปที่ 11 แสดงการเลือก ODBC เวอร์ชัน 5.2 ที่เป็น Unicode

6.  คลิกปุ่ม

หน้าจอกำหนดค่าในการเชื่อมต่อฐานข้อมูลจะปรากฏ ให้เรากำหนดค่าคุณสมบัติในการเชื่อมต่อฐานข้อมูล ในกรณีที่ไม่ได้ปรับเปลี่ยนค่าจากค่าดั้งเดิมของโปรแกรมสามารถกำหนดตามผู้เขียนได้เลย ดังรูป
Data Source Name   : Reports
TCP/IP Server : JHSERVER ( ส่วนนี้ไม่จำเป็นต้องเหมือนผู้เขียน ให้ใส่ชื่อเครื่องหรือ IP Address ของเครื่องที่ผู้อ่านใช้เป็น JHCIS Server )
Port : 3333
User : root
Password : 123456
Database : jhcisdb

รูปที่ 12 แสดงการกำหนดค่าคุณสมบัติในการเชื่อมต่อฐานข้อมูล

7. คลิกปุ่ม

เพื่อทดสอบ ถ้าหากสามารถเชื่อมต่อได้ หน้าจอจะแสดง ดังรูป

รูปที่ 13 แสดงการเชื่อมต่อสำเร็จ

8. คลิกปุ่ม

    เพื่อปิดหน้าจอแสดงผลการทดสอบ จากนั้นคลิกปุ่ม

    เพื่อสร้าง ODBC ตามค่าที่กำหนดไปข้างต้น เราจะกลับมาที่หน้าจอแสดง ODBC ของเครื่อง เราจะเห็นว่า ตอนนี้มี ODBC ที่เราสร้างแล้ว ดังรูป

รูปที่ 14 แสดง ODBC ที่เราสร้าง

9. เท่านี้เราก็ได้ ODBC ที่สามารถใช้ได้กับ Crystal Reports 2013 ของเราแล้ว ให้เราเปิดโปรแกรม Crystal Reports 2013 แล้วเลือกสร้างรายงานใหม่ หน้าจอ Database Expert จะปราฏฏ จากนั้นให้เลือก Create New Connection แล้วดับเบิลคลิกที่ ODBC (RDO) หน้าจอเลือก ODBC จะปราฏ ให้เราเลือก ODBC ที่เราสร้าง ในที่นี้เป็น ODBC ชื่อ Reports  ดังรูป

รูปที่ 15 แสดงการเลือกติดต่อฐานข้อมูลด้วย ODBC

10. คลิกปุ่ม

หน้าจอกำหนด User ID – Password จะปรากฏ ในที่นี้ขอใช้ User ID เป็น root และ Password เป็น 123456 ดังรูป

รูปที่ 16 แสดงการกำหนดค่าในการเชื่อมต่อ

11. คลิกปุ่ม

 จะกลับมาที่หน้าจอ Database Expert เราจะเห็นว่า ในส่วนของ ODBC จะแสดงการเชื่อมต่อที่เราเพิ่งกำหนดค่าไปก่อนหน้านี้ เมื่อเลือกตารางมาใช้ในรายงาน ก็สามารถทำได้ ดังรูป

รูปที่ 17 แสดงการเลือกตารางมาใช้ในรายงาน

12. เพื่อความมั่นใจ ผู้เขียนจึงได้ทดสอบเลือกข้อมูลในตาราง cclinic มาแสดงในรายงาน ซึ่งก็แสดงได้ ดังรูป

รูปที่ 18 แสดงข้อมูลในตาราง cclinic

13. จากรูปที่ 18 แสดงให้เห็นว่า เราสามารถสร้างรายงานจากฐานข้อมูลของ JHCIS ที่เป็น MySQL ได้ตามที่ต้องการแล้ว
คุยกันก่อนจบ

เท่าที่ทราบมา ตอนนี้มีสถานีอนามัยจำนวนมากทั่วประเทศใช้งานโปรแกรม JHCIS ผู้เขียนจึงหวังว่า เนื้อหาในบทความนี้น่าจะช่วยให้การทำงานกับโปรแกรม JHCIS สะดวกมากยิ่งขึ้นและเกิดประโยชน์ไม่มากก็น้อยนะครับ
จากตัวอย่างข้างต้น หลาย ๆ คนอาจจะสงสัยว่า ทำไมไม่ยกตัวอย่างด้วย Crystal Reports 2016 ซึ่งเป็นเวอร์ชันล่าสุด ?
ขอสารภาพตามตรงครับ … ผู้เขียนไม่กล้าเอาตัวล่าสุดมาใส่ในตัวอย่าง เนื่องจากไม่รู้ว่า Crystal reports 2016 จะมีปัญหาหรือ Bug แค่ไหน ( รอไว้ทดสอบจนมั่นใจก่อนจะดีกว่า ) ดังนั้น จึงขอใช้ Crystal Reports 2013 ไปก่อนละกันนะครับ
วิธีแก้ปัญหาทั้ง 2 วิธีในข้างต้น ผู้เขียนได้ทดสอบจนมั่นใจ 100 % แล้ว ดังนั้น ผู้อ่านสามารถเลือกนำใช้งานได้ตามชอบใจ

ถ้าหากมีคำถาม ข้อสงสัยหรือต้องการติดต่อกับผู้เขียนสามารถติดต่อได้ที่ https://www.facebook.com/pongpunsvl หรือเพจของผู้เขียน https://www.facebook.com/AdminSQL