บทที่ 3
การออกแบบและการสร้าง
3.1 การออกแบบ
ใน Notes จะรองรับฐานข้อมูลในรูปของเอกสารที่สามารถทำงานในลักษณะที่ผู้ใช้หลายๆ คนใช้งานกับฐานข้อมูลเดียวกัน เช่น การประยุกต์ใช้งานในรูปแบบการประชุม (Discussion) ฯลฯ ในการพัฒนาโครงงานวิจัย เป็นการพัฒนาการประชุมของภาควิชาวิศวกรรมคอมพิวเตอร์ โดยสร้างฐานข้อมูลวาระการประชุม ที่มีลักษณะของวาระการประชุมในรูปของเอกสารที่เป็นกระดาษ มาสร้างให้เป็นฟอร์ม ที่ใช้สร้างเอกสารบนฐานข้อมูลของ Notes และปรับปรุงลักษณะบางอย่างให้เหมาะกับการใช้งานบน Notes ให้สะดวกมากขึ้น
ในการสร้างฐานข้อมูลวาระการประชุมของภาควิชาฯ จะต้องศึกษาเอกสารการประชุมของภาคให้ละเอียดก่อน แล้วจึงดึงลักษณะที่มีในเอกสารวาระการประชุมภาควิชาฯ นำมาทำเป็นฟอร์มต่างๆ ขึ้น
ลักษณะเอกสารรายงานการประชุมของภาควิชาวิศวกรรมคอมพิวเตอร์
ประกอบด้วยข้อความแสดงการประชุมครั้งที่ และปีที่ ซึ่งแสดงถึงครั้งที่ประชุมและปีที่ประชุมของการประชุมครั้งนั้นๆ
ประกอบด้วยวาระการประชุมและหัวข้อของการประชุมในวาระนั้นๆ วาระสามารถมีได้หลายๆ วาระ และแต่ละวาระสามารถมีหัวข้อการประชุมได้หลายหัวข้อ วาระต่างๆ มีดังนี้
ในวาระนี้ จะประกอบด้วยเรื่องต่างๆ ที่หัวหน้าภาควิชาฯ หรือเลขานุการภาควิชาฯ จะแจ้งให้ทราบในที่ประชุม รวมทั้งข้อเสนอต่างๆ ที่ผู้เข้าร่วมประชุมเสนอความคิดเห็น และมติที่ประชุมที่ตกลงกันในที่ประชุม
ในวาระนี้ จะประกอบด้วยเรื่องต่างๆ ที่มีการแก้ไขในการประชุมครั้งที่แล้ว เพื่อนำมารับรองในการประชุมครั้งนี้
ในวาระนี้ จะประกอบด้วยเรื่องต่างๆ ที่มีในการประชุมครั้งที่ผ่านๆ มา และมีการมอบหมายงานให้ผู้เข้าร่วมประชุม แล้วให้นำมาเสนอในที่ประชุมครั้งนี้ หรือเป็นเรื่องที่มีการพิจารณาแล้ว และนำมาพิจารณาอีกครั้งในการประชุมครั้งนี้
ในวาระนี้ จะประกอบด้วยเรื่องต่างๆ ที่ต้องมีการขอความคิดเห็นของส่วนรวม จึงต้องแจ้งให้ที่ประชุมพิจารณา
ตั้งแต่วาระนี้เป็นต้นไป จะเป็นเรื่องที่มีความสำคัญ หรือเป็นเรื่องที่ต้องใช้เวลาในการพิจารณามาก จึงต้องแยกเป็นวาระอีกวาระหนึ่ง
จากตัวอย่างเอกสารรายงานการประชุมของภาควิชาฯ ในรูปแบบเอกสาร จะสามารถสรุปลักษณะต่างๆ ได้ดังนี้
ในการประชุมจริงๆ จะมีผู้เข้าร่วมประชุมหลายคน และทุกคนจะใช้เอกสารสำเนาเดียวกัน และเมื่อในวาระการประชุมไหน ที่ต้องมีการลงมติความคิดเห็น จะใช้วิธีการออกเสียง และนับคะแนนกันในเวลานั้นเลย ซึ่งถ้าหากผู้เข้าร่วมประชุมท่านใดไม่สามารถมาเข้าร่วมประชุมด้วย ก็จะไม่สามารถออกความคิดเห็นได้ มติที่ตกลงจึงอาจเป็นมติที่มีความลำเอียง หรือไม่เป็นเอกฉันท์ และบางหัวข้อการประชุมที่ต้องมีการโต้เถียงกันมาก ก็จะทำให้เวลาในการประชุมนานขึ้นเรื่อยๆ ทำให้ผู้เข้าร่วมประชุมบางคน อาจเกิดความเบื่อหน่ายขึ้นได้ และเมื่อการประชุมสิ้นสุดลง เลขานุการภาควิชาฯ จะสรุปรายงานการประชุม และบันทึกผู้เข้าร่วมประชุม รวมทั้งสรุปมติต่างๆ ดังนั้นเพื่อแก้ปัญหาต่างๆ ดังที่กล่าวมา จึงต้องการพัฒนาโครงงานนี้ให้สามารถแก้ปัญหาต่างๆ ดังกล่าวได้
จากลักษณะของเอกสารรายงานการประชุมในรูปของกระดาษ สามารถออกแบบฟอร์ม ต่างๆ ในฐานข้อมูลของ Notes ได้โดยมีลักษณะต่างๆ ดังนี้
เมื่อสร้างฟอร์มสำหรับสร้างเอกสารต่างๆ เรียบร้อยแล้ว จะต้องสร้างวิวต่างๆ ที่แสดงรายการของรายงานการประชุม รายการวาระการประชุม รายการหัวข้อการประชุม หรือรายการต่างๆ ที่ควรจะนำเสนอให้ผู้เข้าร่วมประชุมทราบ โดยมีวิวต่างๆ ดังนี้
3.2 การสร้าง
3.2.1 การสร้างฐานข้อมูลของรายงานการประชุม
เมื่อทำการออกแบบฐานข้อมูลเรียบร้อยแล้ว จะทำการสร้างฐานข้อมูล โดยมีขั้นตอนดังนี้
ทำตามขั้นตอนการสร้างฐานข้อมูลของ Notes เป็นการสร้างฐานข้อมูลใหม่โดยร่างรูปแบบใหม่ (Create a form from scratch) ดังที่กล่าวมาแล้วในบทที่ 2 และกำหนดชื่อฐานข้อมูลว่า Project ชื่อไฟล์ที่ใช้เก็บข้อมูลว่า projectweb.nsf
สร้างฟอร์มตามรูปแบบที่ออกแบบไว้แล้ว จะได้ฟอร์มที่มีลักษณะดังในรูปที่ 3.1 แสดงฟอร์มวาระการประชุม จะประกอบด้วยฟิลด์ต่างๆ หลายชนิดตามลักษณะของข้อมูล เช่น ฟิลด์ชนิดข้อความ (Text) จะให้ผู้เข้าร่วมประชุมใส่ข้อความต่างๆ ลงไปในฟิลด์นี้ ถ้าฟิลด์ที่เป็นคีย์เวิร์ด (Keyword) จะมีข้อมูลที่ให้ผู้เข้าร่วมประชุมสามารถเลือกรายการที่กำหนดไว้ให้ หรือถ้าเป็นฟิลด์ริชเท็ก (Rich text) ผู้เข้าร่วมประชุมสามารถป้อนข้อความ รูปภาพ หรือเอกสารแนบที่เป็นไฟล์ต่างๆ ได้ เป็นต้น ฟิลด์ต่างๆ ที่มีอยู่ในฟอร์มนี้ จะแสดงดังตารางที่ 3.1
ตารางที่ 3.1 แสดงรายชื่อฟิลด์ของฟอร์มวาระการประชุม (Main topic)
ชื่อฟิลด์ |
ชนิด |
สถานะ |
การใช้งาน |
Ntimes |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่ครั้งที่ของการประชุมครั้งใหม่ ถ้าไม่มีให้เลือกในฟิลด์ times |
times |
คีย์เวิร์ด |
ใส่ข้อมูล |
ให้เลือกครั้งที่ของการประชุมที่มีอยู่แล้ว โดยจะไปอ่านข้อมูลจากวิว list of person ในคอลัมน์ที่ 2 |
ต่อตารางที่ 3.1 แสดงรายชื่อฟิลด์ของฟอร์มวาระการประชุม (Main topic) |
|||
ชื่อฟิลด์ |
ชนิด |
สถานะ |
การใช้งาน |
Nyear |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่ปีที่ของการประชุม ถ้าไม่มีให้เลือกในฟิลด์ year |
year |
คีย์เวิร์ด |
ใส่ข้อมูล |
ให้เลือกปีที่ของการประชุมที่มีอยู่แล้ว โดยจะไปอ่านข้อมูลจากวิว list of person ในคอลัมน์ที่ 3 |
order |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่ลำดับวาระการประชุม เช่น วาระที่ 1 วาระที่ 2 เป็นต้น |
Newcats |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่เรื่องวาระการประชุมวาระใหม่ ถ้าไม่มีให้เลือกในฟิลด์ Categories |
Categories |
คีย์เวิร์ด |
ใส่ข้อมูล |
ให้เลือกเรื่องวาระการประชุม โดยจะไปอ่านข้อมูลจากวิว By Category ในคอลัมน์ที่ 1 |
Subject |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่หัวข้อเรื่องการประชุม |
body |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่รายละเอียดต่างๆ ที่เป็นเนื้อหาในการประชุมในหัวข้อการประชุมนั้นๆ |
person |
ผู้เขียน |
คำนวณ |
เป็นฟิลด์ที่ดึงข้อมูลของผู้เข้าร่วมประชุมที่กำลังสร้างเอกสารโดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
date |
เวลา |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงข้อมูลของวันที่ที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
When |
เวลา |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงข้อมูลของเวลาที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
Agree |
ข้อความ |
ใส่ข้อมูล |
เป็นฟิลด์ที่ใช้เก็บมติที่ลงความเห็น ว่าเห็นด้วยกับหัวข้อการประชุม โดยเริ่มแรกฟิลด์นี้จะให้ค่าเท่ากับ 0 หมายถึงยังไม่ลงความเห็นเลย และฟิลด์นี้ จะถูกซ่อนไว้ไม่แสดงให้เห็น ส่วนค่าของฟิลด์นี้ จะได้จากการทำงานของสคริปต์ |
NoAgree |
ข้อความ |
ใส่ข้อมูล |
เป็นฟิลด์ที่ใช้เก็บมติที่ลงความเห็น ว่าไม่เห็นด้วยกับหัวข้อการประชุม โดยเริ่มแรกฟิลด์นี้จะให้ค่าเท่ากับ 0 หมายถึงยังไม่ลงความเห็นเลย และฟิลด์นี้ จะถูกซ่อนไว้ไม่แสดงให้เห็น ส่วนค่าของฟิลด์นี้ จะได้จากการทำงานของสคริปต์ |
id1 |
ข้อความ |
คำนวณ |
เป็นฟิลด์ที่เก็บหมายเลข ID ของเอกสารปัจจุบัน เพื่อใช้ในการอ้างอิงกับเอกสารอื่นๆ ที่แสดงความคิดเห็นตอบโต้เอกสารนี้ ฟิลด์นี้จะถูกซ่อนไว้ไม่แสดงให้เห็น |
id |
ข้อความ |
คำนวณ |
เป็นฟิลด์ที่ใช้แสดงว่าเอกสารที่อยู่ในฟอร์มวาระการประชุมเป็นเอกสารหลัก เพื่อใช้อ้างอิงในการเขียนสคริปต์ ในส่วนของการนับมติ ฟิลด์นี้จะถูกซ่อนไว้ |
addfile |
ริชเท็ก |
ใส่ข้อมูล |
เป็นฟิลด์ที่รองรับการใส่เอกสารแนบ (Attachment) |
รูปที่ 3.1 แสดงฟอร์มเอกสารวาระการประชุมที่ออกแบบแล้ว
สร้างฟอร์มตามรูปแบบที่ออกแบบไว้แล้ว จะได้ฟอร์มที่มีลักษณะดังในรูปที่ 3.2และรายละเอียดของฟิลด์ต่างๆ ที่มีอยู่ในฟอร์มนี้ จะแสดงดังตารางที่ 3.2
ตารางที่ 3.2 แสดงรายชื่อฟิลด์ของฟอร์มเสนอความคิดเห็น (Response)
ชื่อฟิลด์ |
ชนิด |
สถานะ |
การใช้งาน |
times |
ข้อความ |
คำนวณค่าที่ส่งมา |
แสดงครั้งที่ของการประชุม โดยดึงข้อมูลจากฟิลด์times ของเอกสารวาระการประชุมที่ต้องการเสนอความคิดเห็นตอบโต้ |
year |
ข้อความ |
คำนวณค่าที่ส่งมา |
แสดงปีที่ของการประชุม โดยดึงข้อมูลจากฟิลด์ yearของเอกสารวาระการประชุมที่ต้องการเสนอความคิดเห็นตอบโต้ |
order |
ข้อความ |
คำนวณค่าที่ส่งมา |
เป็นฟิลด์ที่แสดงลำดับของวาระการประชุม โดยดึงข้อมูลจาก ฟิลด์ order ของเอกสารวาระการประชุมที่ผู้เข้าร่วมประชุมต้องการเสนอความคิดเห็นตอบโต้ |
Categories |
ข้อความ |
คำนวณค่าที่ส่งมา |
แสดงเรื่องวาระการประชุม โดยดึงข้อมูลจากฟิลด์ Categories ของเอกสารวาระการประชุมที่ต้องการเสนอความคิดเห็นตอบโต้ |
Subject |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่หัวข้อเสนอความคิดเห็น |
body |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่รายละเอียดต่างๆ ที่เป็นเนื้อหาของความคิดเห็นที่ต้องการเสนอตอบโต้หัวข้อการประชุมนั้นๆ |
option |
คีย์เวิร์ด |
ใส่ข้อมูล |
ลักษณะของฟิลด์นี้ จะเป็น Radio botton มี 2 ตัวเลือก คือ รับทราบและไม่ออกความคิดเห็น กับรับทราบและลงมติความคิดเห็น การเลือกฟิลด์นี้ มีผลต่อส่วนลงมติ คือ ถ้าเลือกตัวเลือกที่ 1 ส่วนลงมติจะซ่อน ถ้าเลือกตัวเลือกที่ 2 ส่วนลงมติจะไม่ซ่อน |
option2 |
คีย์เวิร์ด |
ใส่ข้อมูล |
ลักษณะของฟิลด์นี้ จะเป็น Radio botton มี 2 ตัวเลือก คือ เห็นด้วย กับไม่เห็นด้วย |
agree |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่เหตุผล ว่าเห็นด้วยหรือไม่เห็นด้วยนั้น เพราะอะไร |
person |
ผู้เขียน |
คำนวณ |
เป็นฟิลด์ที่ดึงข้อมูลของผู้เข้าร่วมประชุมที่กำลังสร้างเอกสารโดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
date |
เวลา |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงข้อมูลของวันที่ที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
when |
เวลา |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงข้อมูลของเวลาที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
id1 |
ข้อความ |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงค่าหมายเลข ID ของเอกสารหลักที่แสดงความคิดเห็นตอบโต้ โดยฟิลด์นี้จะซ่อนไว้ ค่าที่ดึงมา จะใช้ในการทำงานของสคริปต์ |
addfile |
ริชเท็ก |
ใส่ข้อมูล |
เป็นฟิลด์ที่รองรับการใส่เอกสารแนบ (Attachment) |
รูปที่ 3.2 แสดงฟอร์มเอกสารเสนอความคิดเห็นที่ออกแบบแล้ว
ในการนับมติ จะต้องเขียนโลตัสสคริปต์เข้าช่วย และจะมีทั้งในฟอร์มเอกสารเสนอความคิดเห็น ทั้งชนิด Response และชนิด Response to response อยู่ในส่วน Even Querysave จะทำงานเมื่อมีการบันทึกข้อมูลในฟอร์มทั้งคู่นี้ และจะมีการตรวจสอบการลงมติในฟอร์ม ซึ่งถ้าหากมีการลงมติ โลตัสสคริปต์ จะเป็นตัวจัดการดึงค่าของมติในฟิลด์ Agree หรือ NoAgree ในฟอร์มเอกสารวาระการประชุมที่เป็นเอกสารหลักของฟอร์มเอกสารเสนอความคิดเห็น มาเพิ่มค่าขึ้น และทำการบันทึกข้อมูลใหม่ ลงไปในเอกสารวาระการประชุม
โลตัสสคริปต์บางส่วนในการนับมติ มีดังนี้
ส่วนที่ 1
choise$ = uidoc.Fieldgettext("opinion2")เป็นส่วนที่รับค่าจากฟิลด์ option2 เก็บลงในตัวแปร choise เพื่อใช้ตรวจสอบการลงมติ
ส่วนที่ 2 ID$ = "Z"+uidoc.Fieldgettext("id1")
ให้ตัวแปร ID เก็บค่าของหมายเลข ID เอกสารหัวข้อการประชุม เพื่อการค้นหาเอกสารหลัก
ส่วนที่ 3 Set dc = db.FTSearch(ID$, 0,FT_SCORES,FT_STEMS)
Set doc = dc.getnthdocument(1)
จะทำการค้นหาเอกสารตามหมายเลข ID และกำหนดให้เอกสารแรกที่พบเก็บใน doc
ส่วนที่ 4 Set itemyes = doc.getfirstitem("Agree")
temp = Cint(itemyes.text) + 1
yes$ = Cstr(temp)
ส่วนนี้ จะเก็บค่าในฟิลด์ Agree มาใส่ในตัวแปร itemyes และทำการเพิ่มค่าขึ้น 1 ในตัวแปร yes
ส่วนที่ 5 Set itemno = doc.getfirstitem("NoAgree")
temp = Cint(itemno.text) + 1
no$ = Cstr(temp)
จะเก็บค่าในฟิลด์ NoAgree มาใส่ในตัวแปร itemno และทำการเพิ่มค่าขึ้น 1 ในตัวแปร no
ส่วนที่ 6 If choise$="เห็นด้วย" Then
Set item = doc.ReplaceItemValue ( "Agree", yes$ )
End If
เป็นส่วนที่ตรวจสอบ ถ้ามติเห็นด้วย ให้เก็บค่ามติที่เพิ่มขึ้นจากตัวแปร yes ลงในฟิลด์ Agree
ส่วนที่ 7 If choise$="ไม่เห็นด้วย" Then
Set item = doc.ReplaceItemValue ( "NoAgree", no$ )
End If
เป็นส่วนที่ตรวจสอบ ถ้ามติไม่เห็นด้วย จะเก็บค่ามติจากตัวแปร no ลงในฟิลด์ NoAgree
ส่วนที่ 8 Call doc.Save( False, False )
เป็นส่วนที่ทำการบันทึกเอกสารลงในเอกสารหลัก
เมื่อสร้างฟอร์มตามรูปแบบที่ออกแบบไว้แล้ว จะได้ฟอร์มที่มีลักษณะคล้ายกับฟอร์มเสนอความคิดเห็น (Response) ดังแสดงในรูปที่ 3.2 ดังนั้นฟิลด์ที่ประกอบในฟอร์มนี้ก็จะเหมือนกับฟอร์มเสนอความคิดเห็น (Response) ดูรายละเอียดของฟิลด์ในตารางที่ 3.2
เมื่อสร้างฟอร์มตามรูปแบบที่ออกแบบไว้ จะได้ฟอร์มที่มีลักษณะดังแสดงในรูปที่ 3.3 รายละเอียดของฟิลด์ต่างๆ ที่มีอยู่ในฟอร์มนี้ จะแสดงดังตารางที่ 3.3
ตารางที่ 3.3 แสดงรายชื่อฟิลด์ของฟอร์มสรุป (Summery)
ชื่อฟิลด์ |
ชนิด |
สถานะ |
การใช้งาน |
times9 |
ข้อความ |
คำนวณค่าที่ส่งมา |
เป็นฟิลด์ที่แสดงครั้งที่ของการประชุม โดยดึงข้อมูลจากฟิลด์times ของเอกสารวาระการประชุมที่ต้องการสร้างเอกสารสรุป |
year9 |
ข้อความ |
คำนวณค่าที่ส่งมา |
เป็นฟิลด์ที่แสดงปีที่ของการประชุม โดยดึงข้อมูลจากฟิลด์ year ของเอกสารวาระการประชุมที่ต้องการสร้างเอกสารสรุป |
order9 |
ข้อความ |
คำนวณค่าที่ส่งมา |
แสดงลำดับของวาระการประชุม โดยดึงข้อมูลจาก ฟิลด์ order ของเอกสารวาระการประชุมที่ต้องการสร้างเอกสารสรุป |
Categories9 |
ข้อความ |
คำนวณค่าที่ส่งมา |
แสดงเรื่องวาระการประชุม โดยดึงข้อมูลจากฟิลด์ Categories ของเอกสารวาระการประชุมที่ต้องการสร้างเอกสารสรุป |
Subject2 |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่หัวข้อสรุป |
body |
ข้อความ |
ใส่ข้อมูล |
ให้ใส่รายละเอียดต่างๆ ที่เป็นสรุปของหัวข้อการประชุมนั้นๆ |
person |
ผู้เขียน |
คำนวณ |
ค่าในฟิลด์จะดึงข้อมูลของผู้เข้าร่วมประชุมที่กำลังสร้างเอกสารโดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
date |
เวลา |
คำนวณเพื่อแสดงผล |
ค่าในฟิลด์จะดึงข้อมูลของวันที่ที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
When |
เวลา |
คำนวณเพื่อแสดงผล |
ค่าในฟิลด์จะดึงข้อมูลของเวลาที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
Parent |
ข้อความ |
คำนวณ |
จะดึงข้อมูลจากเอกสารวาระการประชุม |
addfile |
ริชเท็ก |
ใส่ข้อมูล |
เป็นฟิลด์ที่รองรับการใส่เอกสารแนบ (Attachment) |
รูปที่ 3.3 แสดงฟอร์มสรุปที่ออกแบบแล้ว
สร้างฟอร์มตามรูปแบบที่ออกแบบไว้แล้ว จะได้ฟอร์มที่มีลักษณะดังในรูปที่ 3.4 และรายละเอียดของฟิลด์ต่างๆ ที่อยู่ในฟอร์มนี้ จะแสดงดังตารางข้างล่างนี้
ตารางที่ 3.4 แสดงรายชื่อฟิลด์ของฟอร์มหัวข้อการประชุมทั้งหมด (ListTopic)
ชื่อฟิลด์ |
ชนิด |
สถานะ |
การใช้งาน |
intimes |
คีย์เวิร์ด |
ใส่ข้อมูล |
ฟิลด์นี้ จะมีค่าครั้งที่ของการประชุมให้เลือก โดยจะอ่านค่าจากวิวหัวข้อการประชุม คอลัมน์ที่ 2 |
inyear |
คีย์เวิร์ด |
ใส่ข้อมูล |
ฟิลด์นี้ จะมีค่าปีที่ของการประชุมให้เลือก โดยจะอ่านค่าจากวิวหัวข้อการประชุม คอลัมน์ที่ 1 |
intimes2 |
ข้อความ |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงค่าจากฟิลด์ intimes มาแสดงผล |
inyear2 |
ข้อความ |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงค่าจากฟิลด์ inyear มาแสดงผล |
List |
ข้อความ |
คำนวณ |
เป็นฟิลด์ที่รับค่าจากวิวหัวข้อการประชุม คอลัมน์ที่ 5 โดยจะรับค่าจากการทำงานของโลตัสสคริปต์ของปุ่ม Do (เป็นหัวข้อการประชุมทั้งหมดในการประชุมครั้งที่ต้องการ) |
Person |
ผู้เขียน |
คำนวณ |
เป็นฟิลด์ที่ดึงข้อมูลของผู้เข้าร่วมประชุมที่กำลังสร้างเอกสารโดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
date |
เวลา |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงข้อมูลของวันที่ที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
When |
เวลา |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงข้อมูลของเวลาที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
โลตัสสคริปต์บางส่วนของการคลิกปุ่ม Do
ส่วนที่ 1 REM อ่านค่าจาก field "intimes", "inyear"
Set uidoc = ws.CurrentDocument
Call uidoc.refresh
Call uidoc.FieldSetText ( "list", "")
itimes = uidoc.FieldGetText("intimes")
iyear = uidoc.FieldGetText("inyear")
เมื่อกดปุ่ม Do จะอ่านค่าจากฟิลด์ intimes มาเก็บในตัวแปร itimes และอ่านค่าจากฟิลด์ inyear มาเก็บในตัวแปร iyear
ส่วนที่ 2
REM อ่านค่าจาก view "By topic"Set db = session.CurrentDatabase
Set view = db.GetView("By Topic")
Set doc = view.GetFirstDocument
While Not(doc Is Nothing)
test1 = doc.ColumnValues(2)
test2 = doc.ColumnValues(3)
If (test1=itimes) And (test2=iyear) Then
subj = doc.ColumnValues(4)
Call uidoc.FieldAppendText("list"," --> " & subj & Newline)
End If
Set doc = view.GetNextDocument(doc)
Wend
จากนั้นจะอ่านค่าเอกสารจากวิว By Topic เพื่อหาเอกสารที่มีค่าตรงกับค่าที่ต้องการ โดยจะเปรียบเทียบค่าระหว่างค่าในคอลัมน์ที่ 2 (ซึ่งเก็บในตัวแปร test1) กับตัวแปร itimes และเปรียบเทียบค่าในคอลัมน์ที่ 3 (ซึ่งเก็บในตัวแปร test2) กับตัวแปร iyear
ถ้าหากค่าที่เปรียบเทียบตรงกันทุกค่า จะนำค่าในคอลัมน์ที่ 4 ซึ่งเป็นหัวข้อการประชุม มาใส่ในฟิลด์ list และแสดงบนหน้าจอ
รูปที่ 3.4 แสดงฟอร์มหัวข้อการประชุมทั้งหมด (ListTopic)
สร้างฟอร์มตามรูปแบบที่ออกแบบไว้แล้ว จะได้ฟอร์มที่มีลักษณะดังในรูปที่ 3.5 และรายละเอียดของฟิลด์ต่างๆ ที่มีอยู่ในฟอร์มนี้ แสดงดังตารางที่ 3.5
ตารางที่ 3.5 แสดงรายชื่อฟิลด์ของฟอร์มข้อเสนอของหัวข้อการประชุม (List of detail)
ชื่อฟิลด์ |
ชนิด |
สถานะ |
การใช้งาน |
intimes |
คีย์เวิร์ด |
ใส่ข้อมูล |
ฟิลด์นี้ จะมีค่าครั้งที่ของการประชุมให้เลือก โดยจะอ่านค่าจากวิวข้อเสนอ คอลัมน์ที่ 2 |
inyear |
คีย์เวิร์ด |
ใส่ข้อมูล |
ฟิลด์นี้ จะมีค่าปีที่ของการประชุมให้เลือก โดยจะอ่านค่าจากวิวข้อเสนอ คอลัมน์ที่ 1 |
subject |
คีย์เวิร์ด |
ใส่ข้อมูล |
เป็นฟิลด์ที่ดึงข้อมูลจากวิวหัวข้อการประชุมมาเป็นตัวเลือกให้ผู้ใช้เลือกว่าต้องการดูข้อเสนอของหัวข้อการประชุมใด |
intimes2 |
ข้อความ |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงค่าจากฟิลด์ intimes มาแสดงผล |
inyear2 |
ข้อความ |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงค่าจากฟิลด์ inyear มาแสดงผล |
subject2 |
ข้อความ |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงค่าจากฟิลด์ subject มาแสดงผล |
title |
ข้อความ |
คำนวณ |
เป็นฟิลด์ที่รับค่าจากวิวหัวข้อการประชุม คอลัมน์ที่ 4 โดยจะรับค่าจากการทำงานของโลตัสสคริปต์ของปุ่ม Do (เป็นหัวข้อการประชุมทั้งหมดในการประชุมครั้งที่ต้องการ) |
person |
ผู้เขียน |
คำนวณ |
เป็นฟิลด์ที่ดึงข้อมูลของผู้เข้าร่วมประชุมที่กำลังสร้างเอกสารโดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
date |
เวลา |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงข้อมูลของวันที่ที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
When |
เวลา |
คำนวณเพื่อแสดงผล |
เป็นฟิลด์ที่ดึงข้อมูลของเวลาที่กำลังสร้างเอกสาร โดยใช้ฟอร์มนี้ มาเป็นค่าของฟิลด์ |
โลตัสสคริปต์บางส่วนของการคลิกปุ่ม Do
ส่วนที่ 1 REM อ่านค่าจาก field "intimes", "inyear" ,"subject"
Set uidoc = ws.CurrentDocument
Call uidoc.refresh
Call uidoc.FieldSetText ( "list", "")
isubj = uidoc.FieldGetText( "subject2" )
itimes = uidoc.FieldGetText("intimes")
iyear = uidoc.FieldGetText("inyear")
เมื่อกดปุ่ม Do จะอ่านค่าจากฟิลด์ intimes มาเก็บในตัวแปร itimes อ่านค่าจากฟิลด์ inyear มาเก็บในตัวแปร iyear และอ่านค่าจากฟิลด์ subject2 มาเก็บในตัวแปร isubj
ส่วนที่ 2
REM อ่านค่าจาก View "detail"Set view = db.GetView("detail")
Set doc = view.GetFirstDocument
While Not(doc Is Nothing)
test1 = doc.ColumnValues(1)
test2 = doc.ColumnValues(0)
If (test1=itimes) And (test2=iyear) Then
If isubj=doc.ColumnValues(2) Then
test1 = doc.ColumnValues(3)
Call uidoc.FieldAppendText("list",test1 & "-->เสนอโดย : ")
test2 = doc.ColumnValues(5)
Set collection = db.FTSearch(test2, 0,FT_SCORES,FT_STEMS)
Set doc2 = collection.GetFirstDocument
Set item = doc2.GetFirstItem("person")
plainText = item.Text
Call uidoc.FieldAppendText("list",plainText & Newline)
Set item = doc2.GetFirstItem( "body" )
plainText = item.Text
If (plainText = "") Then
Call uidoc.FieldAppendText("list","รายละเอียด : ---" & Newline & Newline)
Else
Call uidoc.FieldAppendText("list","รายละเอียด : " & plainText & Newline &
Newline)
End If
End If
End If
Set doc = view.GetNextDocument(doc)
Wend
ส่วนนี้จะเป็นส่วนที่อ่านค่าเอกสารจากวิว detail เพื่อหาเอกสารที่มีค่าตรงกับค่าที่ต้องการ โดยจะเปรียบเทียบค่าระหว่างค่าในคอลัมน์ที่ 0 (ซึ่งเก็บในตัวแปร test2) กับตัวแปร iyear และเปรียบเทียบค่าในคอลัมน์ที่ 1 (ซึ่งเก็บในตัวแปร test1) กับตัวแปร itimes และค่าในคอลัมน์ที่ 2 เปรียบเทียบกับตัวแปร isubj
ถ้าหากค่าที่เปรียบเทียบตรงกันทุกค่า จะนำค่าในคอลัมน์ที่เป็นข้อเสนอ ชื่อผู้เสนอ รวมทั้งค่าจากฟิลด์ body ในเอกสารนั้นๆ มาใส่ในฟิลด์ list และแสดงบนหน้าจอ
รูปที่ 3.5 แสดงฟอร์มข้อเสนอของหัวข้อการประชุม (List of detail)
ฟอร์มย่อยที่สร้างขึ้นนี้ เป็นฟอร์มที่บรรจุฟิลด์หลักที่ใช้ประกอบในหลายๆ ฟอร์มที่สร้างขึ้น ลักษณะของฟอร์มย่อยนี้ แสดงในรูปที่ 3.6 และรายละเอียดของฟิลด์ต่างๆ ที่มีอยู่ในฟอร์มนี้ จะแสดงดังตารางข้างล่างนี้ดังในตารางที่ 3.6
รูปที่ 3.6 แสดงฟอร์มย่อยที่สร้างขึ้น
ตารางที่ 3.6 แสดงรายชื่อฟิลด์ของฟอร์มย่อย (Headform subform)
ชื่อฟิลด์ |
ชนิด |
สถานะ |
การใช้งาน |
From |
ผู้เขียน |
คำนวณค่าที่ส่งมา |
เป็นฟิลด์ที่ดึงชื่อของผู้ใช้มาใส่ โดยใช้สูตร @UserName |
OriginalSubject |
ข้อความ |
คำนวณค่าที่ส่งมา |
เป็นฟิลด์ที่ดึงค่าหัวข้อเรื่องจากเอกสารหลักที่ลำดับชั้นสูงสุดมาใส่ |
ImmediateParentSubject |
ข้อความ |
คำนวณค่าที่ส่งมา |
เป็นฟิลด์ที่ดึงค่าหัวข้อเรื่องจากเอกสารหลักมาใส่ |
ParentForm |
ข้อความ |
คำนวณค่าที่ส่งมา |
เป็นฟิลด์ที่เก็บชนิดของฟอร์มที่เป็นเอกสารหลัก จะใช้ประโยชน์ในการแสดงเอกสารหลัก (Parent Preview) |
NewLetterSubject |
ข้อความ |
คำนวณ |
ใช้เก็บข้อความที่แสดงว่าหัวข้อของเอกสารปัจจุบัน ตอบโต้หัวข้อของเอกสารหลัก |
MainID |
ข้อความ |
คำนวณค่าที่ส่งมา |
เก็บหมายเลข ID ของเอกสารหลัก |
DocID |
ข้อความ |
คำนวณ |
เก็บหมายเลข ID ของตัวมันเอง |
Reader |
ผู้อ่าน |
คำนวณ |
ใช้เก็บชื่อผู้อ่าน |
OriginalID |
ข้อความ |
คำนวณค่าที่ส่งมา |
เก็บหมายเลข ID ของเอการหลักที่ลำดับชั้นสูงสุดมาเก็บไว้ เพื่อจะเรียกใช้ภายหลัง |
สร้างวิวตามที่ออกแบบไว้ จะได้วิวที่มีลักษณะดังนี้
c1 |
c2 |
c3 |
c4 |
c5 |
c6 |
ตารางที่ 3.7 แสดงรายละเอียดคอลัมน์ของวิวเอกสารทั้งหมด
ลำดับคอลัมน์ |
สถานะ |
ความหมายของข้อมูล |
C1 |
แสดง |
แสดงครั้งที่และปีที่ของการประชุม |
C2 |
แสดง |
แสดงลำดับของวาระและเรื่องวาระการประชุม |
C3 |
ซ่อน |
นับจำนวนเอกสารเสนอความคิดเห็นกับเอกสารหลัก |
C4 |
แสดง |
แสดงหัวข้อวาระการประชุม |
C5 |
แสดง |
แสดงหัวข้อเสนอความคิดเห็น |
C6 |
ซ่อน |
แสดงวันที่ที่สร้างเอกสาร |
สร้างวิวตามที่ออกแบบไว้ จะได้ที่มีลักษณะดังนี้
C1 |
C2 |
C3 |
C4 |
ตารางที่ 3.8 แสดงรายละเอียดคอลัมน์ของวิวผู้เข้าร่วมประชุม
ลำดับคอลัมน์ |
สถานะ |
ความหมายของข้อมูล |
C1 |
แสดง |
แสดงครั้งที่และปีที่ของการประชุม |
C2 |
แสดง |
แสดงรายชื่อของผู้เข้าร่วมประชุม |
C3 |
ซ่อน |
แสดงครั้งที่ของการประชุม |
C4 |
ซ่อน |
แสดงปีที่ของการประชุม |
สร้างวิวตามที่ออกแบบไว้ จะได้วิวที่มีลักษณะดังนี้
c1 |
c2 |
c3 |
c4 |
ตารางที่ 3.9 แสดงรายละเอียดคอลัมน์ของวิววาระการประชุม
ลำดับคอลัมน์ |
สถานะ |
ความหมายของข้อมูล |
C1 |
แสดง |
แสดงเรื่องวาระการประชุม โดยดึงข้อมูลจากฟิลด์ Categories |
C2 |
แสดง |
แสดงครั้งที่และปีที่ของการประชุม |
C3 |
แสดง |
แสดงหัวข้อวาระการประชุม |
C4 |
แสดง |
แสดงหัวข้อเสนอความคิดเห็น |
สร้างวิวตามที่ออกแบบไว้ จะได้วิวที่มีลักษณะดังนี้
c1 |
c2 |
c3 |
c4 |
c5 |
c6 |
c7 |
c8 |
ตารางที่ 3.10 แสดงรายละเอียดคอลัมน์ของวิวหัวข้อการประชุม
ลำดับคอลัมน์ |
สถานะ |
ความหมายของข้อมูล |
C1 |
แสดง |
แสดงครั้งที่และปีที่ของการประชุม |
C2 |
แสดง |
แสดงลำดับของวาระและเรื่องวาระการประชุม |
C3 |
ซ่อน |
แสดงครั้งที่ของการประชุมในรูปของแบบของข้อความ (Text) |
C4 |
ซ่อน |
แสดงปีที่ของการประชุมในรูปของแบบของข้อความ (Text) |
C5 |
แสดง |
แสดงหัวข้อวาระการประชุม |
C6 |
ซ่อน |
แสดงหมายเลข ID ของเอกสาร |
C7 |
แสดง |
แสดงจำนวนมติที่เห็นด้วย |
C8 |
แสดง |
แสดงจำนวนมติที่ไม่เห็นด้วย |
สร้างวิวตามที่ออกแบบไว้ จะได้วิวที่มีลักษณะดังนี้
c1 |
c2 |
c3 |
c4 |
c5 |
ตารางที่ 3.11 แสดงรายละเอียดคอลัมน์ของวิวเอกสารสรุป
ลำดับคอลัมน์ |
สถานะ |
ความหมายของข้อมูล |
C1 |
แสดง |
แสดงครั้งที่และปีที่ของการประชุม |
C2 |
แสดง |
แสดงลำดับของวาระและเรื่องวาระการประชุม |
C3 |
แสดง |
แสดงหัวข้อของเอกสารสรุป |
C4 |
แสดง |
แสดงหัวข้อวาระการประชุมของเอกสารสรุป |
C5 |
ซ่อน |
แสดงหมายเลข ID ของเอกสารวาระการประชุม |
วิวนี้ เป็นวิวซ่อนไม่แสดงให้ผู้ใช้เห็น วิวนี้จะถูกฟอร์มข้อเสนอของหัวข้อการประชุมเรียกใช้ เพื่อนำค่าในวิวไปแสดง วิวจะมีลักษณะดังนี้
c1 |
c2 |
c3 |
c4 |
c5 |
c6 |
c7 |
ตารางที่ 3.12 แสดงรายละเอียดคอลัมน์ของวิวข้อเสนอ
ลำดับคอลัมน์ |
สถานะ |
ความหมายของข้อมูล |
C1 |
แสดง |
แสดงครั้งที่และปีที่ของการประชุม |
C2 |
แสดง |
แสดงลำดับของวาระและเรื่องวาระการประชุม |
C3 |
แสดง |
แสดงหัวข้อการประชุม |
C4 |
แสดง |
แสดงข้อเสนอความคิดเห็น |
C5 |
แสดง |
แสดงชื่อของผู้เสนอ |
C6 |
แสดง |
แสดงหมายเลข ID เอกสารเสนอความคิดเห็น |
รูปที่ 3.7 แสดงรูปภาพ Navigator
การสร้างรูปภาพใน Navigator นี้ จะใช้โปรแกรมในการสร้างภาพทำการสร้างภาพในลักษณะที่ต้องการขึ้นมาก่อน จากนั้นเมื่อจะทำการดึงรูปภาพลงใน Navigator แล้วทำการกำหนดขอบเขตของพื้นที่ที่ใช้ในการเปิดวิว ซึ่งจะเขียนฟังก์ชันเพื่อเปิดวิวขึ้นมารองรับ เมื่อผู้เข้าร่วมประชุมใช้เมาส์คลิกไปในส่วนของพื้นที่ของการเลือกวิวที่กำหนด Notes ก็จะเปิดวิวนั้นขึ้นมา
ฟอร์มแอคชั่นที่กล่าวถึงนี้ เป็นฟอร์มแอคชั่นที่สร้างอยู่ในรูปปุ่ม อยู่ใต้เมนูหลัก เรียกพื้นที่บริเวณนี้ว่า แอคชั่นบาร์ (Action Bar) ฟอร์มแอคชั่นที่สร้างขึ้นทั้งหมด มีดังนี้
การทำงาน : ปิดเอกสารปัจจุบัน
สูตร : @PostedCommand([FileCloseWindow])
รูปที่ 3.8 แสดงรูปปุ่มปิดเอกสาร
การทำงาน : บันทึกเอกสารลงหน่วยความจำ
สูตร : @PostedCommand([FileSave])
รูปที่ 3.9 แสดงรูปปุ่มบันทึก
การทำงาน : เปลี่ยนโหมดการทำงานของเอกสารให้อยู่ในโหมดแก้ไข
สูตร : @Command([EditDocument])
รูปที่ 3.10 แสดงรูปปุ่มแก้ไข
การทำงาน : แนบไฟล์เข้ากับเอกสารปัจจุบัน
สูตร : @Command([EditinsertFileAttachment])
รูปที่ 3.11 แสดงรูปปุ่มเพิ่มเอกสารแนบ
การทำงาน : ทำให้เอกสารนี้อาจได้เฉพาะผู้สร้างเอกสาร
สูตร : FIELD readers := @Trim(@Unique(From : @UserName));
@PostedCommand([RefreshHideFormulas]);
@Command([ViewRefreshFields]);
รูปที่ 3.12 แสดงรูปปุ่มทำเป็นเอกสารลับ
การทำงาน : ทำให้เอกสารนี้อาจได้ทุกคน
สูตร : FIELD readers := @DeleteField;
@PostedCommand([RefreshHideFormulas]);
@Command([ViewRefreshFields]);
รูปที่ 3.13 แสดงรูปปุ่มทำเป็นเอกสารเปิดเผย
การทำงาน : พิมพ์เอกสารออกทางเครื่องพิมพ์
สูตร : @Command([FilePrint])
รูปที่ 3.14 แสดงรูปปุ่มพิมพ์เอกสาร
การทำงาน : เปลี่ยนส่วนที่ใช้เลือกวิวให้อยู่ในรูป Navigator หรือให้เลือกวิว
แบบข้อความ
สูตร :
EnvName := @Trim(@Name([CN];@Subset(@DbName;1))+@Subset(@DbName;-1)+"NavigatorState");@If(@Environment(EnvName)="0":"";
@Do( @SetEnvironment (EnvName;"1");
@Command([OpenNavigator];"Main Navigator";"0"));
@Do( @SetEnvironment (EnvName;"0");
@Command([ViewNavigatorsFolders])) );
@Command([RefreshHideFormulas])
รูปที่ 3.15 แสดงรูปปุ่ม Navigator
การทำงาน : พิมพ์เอกสารออกทางเครื่องพิมพ์
สูตร : @Command([FilePrint])
รูปที่ 3.16 แสดงรูปปุ่มพิมพ์เอกสาร
การทำงาน : เข้าสู่ฟอร์มสรุป
สูตร :
@If(@IsMember(MainID;@DbColumn("":"nocache";"";"Conclude";5)); success; @PostedCommand([Compose];"Summery"))รูปที่ 3.17 แสดงรูปปุ่มสร้างเอกสารสรุป
การทำงาน : เข้าสู่ฟอร์มหัวข้อวาระการประชุม
สูตร : @PostedCommand([Compose]; Main Topic)
รูปที่ 3.18 แสดงรูปปุ่มเพิ่มหัวข้อการประชุม
การทำงาน : เข้าสู่ฟอร์มเสนอความคิดเห็น
สูตร : @PostedCommand([Compose]; Response)รูปที่ 3.19 แสดงรูปปุ่มเสนอความคิดเห็น
การทำงาน : เข้าสู่ฟอร์มเสนอความคิดเห็น
สูตร : @PostedCommand([Compose]; Response to response)
รูปที่ 3.20 แสดงรูปปุ่มเสนอความคิดเห็นตอบโต้
การทำงาน : เข้าสู่ฟอร์มหัวข้อการประชุมทั้งหมด
สูตร : @PostedCommand([Compose]; List of topic)
รูปที่ 3.21 แสดงรูปปุ่มหัวข้อการประชุมทั้งหมด
การทำงาน : เข้าสู่ฟอร์มข้อเสนอของหัวข้อประชุม
สูตร : @PostedCommand([Compose]; List of detail)
รูปที่ 3.22 แสดงรูปปุ่มข้อเสนอของหัวข้อการประชุม