« เมื่อ: กุมภาพันธ์ 15, 2007, 22:51:40 PM »
0
เนื่องจากติดภารกิจด้านอื่น จึงจำใจต้องยกหน้าที่การดูแลระบบให้น้องไอทีดูแลเต็มตัว พบว่า ปัญหาสำคัญที่ผู้ดูระบบ(มือใหม่) พบก็คือการเขียนรายงาน โดยเฉพาะแบบที่ผู้ใช้ต้องใส่ค่า เช่น hn,an,vn เอง(ยกเว้นวันที่ที่ อ.เขียนระบบตรวจสอบอัตโนมัติอยู่แล้ว) ซึ่งต้องใช้ Pascal script ในการทำงาน
ขอสรุปหลักการการเขียน custom report สั้นๆ เพื่อความเข้าใจตรงกัน หลักๆมีสองแบบ คือ
1. ใช้ sql script ล้วนๆ ข้อดีคือ ตรงไปตรงมา สามารถนำผลการ query ไปใช้ได้เลย ข้อเสีย แม้เราจะสามารถเชื่อมระหว่างหลายๆตารางได้ แต่ก็จะทำ query ซับซ้อน ทำงานช้า กำหนดเงื่อนไขได้จำกัด เนื่องจากเป็นการ query ในครั้งเดียว ที่สำคัญ(ซึ่งเป็นที่มาของบทความนี้)ก็คือ เราไม่สามารถรับค่าตัวแปรอย่างอิสระจากผู้ใช้
2. ใช้ Pascal ดึงข้อมูลใส่ตาราง tempreport แล้ว ใช้ sql script ดึงจาก tempreport มาแสดงผลอีกที ข้อดี(มากมาย) ยืดหยุ่นมาก สามารถ query ไม่จำกัดจำนวนครั้งใน script สามารถรับค่าตัวแปรได้ ข้อเสียคือ เขียนยาก เพราะเป็นภาษา Pascal มีความยุ่งยากมาก เนื่องจากจะต้องใส่ทุกค่าที่ต้องการแสดงผลลงใน ตาราง temreport หากจำนวนค่าที่ต้องการแสดงผลมาก จำเป็นต้องใช้ record ใน tempreport มากกว่า 1 แถว การเขียน script ก็จะยุ่งยากขึ้นมาก และแต่ละ filed ใน tempreport ไม่ได้สื่อความหมาย ทำให้ใช้งานยาก ต้องจดจำ หรือกำหนดชื่อให้กับทุกค่า
บทความนี้ขอเสนอไอเดียการใช้ Pascal script แบบประยุกต์ ในรายงานที่จำเป็นต้องใช้ค่าที่รับมาจากผู้ใช้โดยมีข้อดี คือ
1.ไม่ต้องบันทึกข้อมูลทุกตัวที่ต้องการลงใน tempreport โดยใช้ Pascal script แต่ยังใช้ Pascal script เพื่อรับตัวแปรจากผู้ใช้งาน และบันทึกลง tempreport เฉพาะตัวแปรนี้ เพื่อใช้ในการ query ภายหลัง
2. เนื่องจากไม่ต้องบันทึกข้อมูลจำนวนมากลงใน tempreport ลดความยาวและซับซ้อนของ Pascal script
3. ดึงข้อมูลโดย sql script เป็นหลัก โดยเชื่อมกับตัวแปรที่บันทึกใน tempreport ทำให้ออกแบบรายงานง่ายขึ้น เนื่องจากตัวแปร แต่ละตัวยังคงแสดงชื่อ ตามชื่อ field
อย่างไรตาม ยังสามารถบันทึกข้อมูลอื่นๆ ได้เป็นอิสระจาก query หลัก โดยบันทึกลงใน filed ต่างๆของ tempreport ได้ตามปกติ
ขอสรุปรูปแบบของ Pascal script สำหรับผู้เริ่มต้น โดยสังเขป ซึ่งจะประกอบไปด้วยกระบวนการหลักๆ คือ
1) การประกาศฟังชั่นที่ใช้ใน script
2)การประกาศตัวแปร
3) รับค่าจากผู้ใช้
4) หลังจากนั้น จัดการกับตัวแปร เช่น ตรวจสอบความถูกต้องของค่าที่ได้รับ จนได้ค่าที่ต้องการ
5) แล้วลบข้อมูลที่มีอยู่ตาราง tempreport ที่มี id ตามที่เรากำหนดไว้(คือชื่อตาราง)
6) กำหนดค่าให้กับ field ที่เราต้องการ
7) สุดท้ายก็ update ตาราง tempreport เป็นอันเสร็จพิธี
ตัวอย่างแรกเป็นตัวอย่างง่ายๆ คือ รับการ hn จากผู้ใช้ โดยไม่ต้องใช้ศูนย์นำหน้า แล้วไปเติมศูนย์ให้เป็น 9 หลักใน script(เพื่อความสะดวกแก่ผู้ใช้งาน) แล้วนำไปเชื่อมกับ ตาราง patient เพื่อดึงข้อมูลตาม hn ที่ต้องการ
« แก้ไขครั้งสุดท้าย: พฤษภาคม 30, 2015, 14:35:23 PM โดย admin »
บันทึกการเข้า
ความช่วยเหลือ จะมายังผู้ที่พยายาม
Administrator,Programmer,Thungyangdaeng Hospital,Pattani
SERVER: Intel Xeon Dual-Core 5140 2.33GHz. Cach 4NB.1333Mhz ,RAM DDR2 512MB*2,HDD SATA2 160 GB*2,
OS:CentOS 4.4 x86_64 MySQL 4.1.20 ,Replicate: Pentium4 WindowsXP RAM 512 MB, Client:Celeron,Sempron,PentiumIII WindowsXP