Monday, December 10, 2012

1:45 AM
ตอนนี้เรามาว่ากันด้วยการทดสอบข้อมูลของฐานข้อมูลลูกค้า โดยการเรียกจาก table order

เมื่อเรากลับมาที่ layout ของ order แล้ว เราก็จะต้องสร้าง record ให้มันเสียก่อน จึงจะสามารถดำเนินการทดสอบได้

แต่ก่อนอื่นมาว่ากันด้วยเรื่องของ field "order number" เสียก่อน เนื่องจากเรากำหนดไว้ว่ามันควรจะประกอบไปด้วยข้อมูลดังนี้

CNX + เลขท้าย 2 ตัวของ พศ.+ เลขเดือน+ เลขที่สร้างโดยอัตโนมัติ

ดังนั้น การสร้างปุ่ม new record ของเราจึงไม่เพียงพอที่จะทำให้ order number ได้ค่านี้ได้ จึงต้องมีการเขียน script เพื่อให้ filemaker ทำการใส่ค่าที่เราต้องการลงไปใน field order number

ตามนี้ ..

อย่างแรกให้เลือก menu การสร้าง script

001

จา่กนั้นให้ทำการเลือกปุ่ม new เพื่อทำการสร้าง script ขึ้นมาใหม่ filemaker ก็จะถามให้ตั้งชื่อ script ก็ตั้งเป็นอะไรก็ได้ที่สื่อความหมายว่าจะให้ script นี้ทำอะไร

002

เป้าหมายของ script นี้เราต้องการให้มันทำการสร้างใบเสนอราคาใบใหม่ พร้อมทั้งทำการ set ค่า ของ field "Order number" ด้วยค่าข้างล่าง ซึ่งเราก็ต้องบอกให้ script ว่าเราจะ set ค่าไหน ตามตัวอย่าง

003

อย่างแรกให้ทำการสร้าง new record ขึ้นมาก่อน แล้วตามด้วยการ set ค่าของ order number

CNX + เลขท้าย 2 ตัวของ พศ.+ เลขเดือน+ เลขที่สร้างโดยอัตโนมัติ

ซึ่งสามารถเขียนเป็นสูตรได้ดังนี้

"CNX" & Right(Year(Get(currentdate)) + 543,2) & Month(Get (currentdate)) & Get(RecordID)

ความหมายคือ ให้เอาข้อความ CNX เป็นตัวตั้ง แล้วต่อด้วยการคัดเลขท้าย 2 ตัวของปี พศ (คศ ต้องพวกอีก 543 ปีจึงจะได้ พศ) แล้วก็ต่อด้วยเลขเดือน จากนั้นก็ลงท้ายด้วย record id ซึ่ง ตัว record id นี้ ไม่มีทางซ้ำกันเด็ดขาด เมื่อทำการลบ record ไป มันจะไม่นำมาใช้ซ้ำอีกเช่นกัน

004

จริงๆแล้วการเขียน script คือการสร้างกระบวนการทำงานอัตโนมัติของการสั่งงาน filemaker pro ตามปกติ หลักการในการเขียนนั้น เราก็แค่รู้ว่าเราต้องทำตามลำดับขั้นตอนอย่างไรบ้าง แล้วเพียงแค่หาคำสั่งที่มันจะทำให้เราได้ผลลัพธ์ตามต้องการเท่านั้นเอง

004

รูปข้างบน ไม่อยากบอกเลยว่า ลืมใส่คำสั่ง new record ก่อน ดังนั้น เมื่อสร้าง script เสร็จ จะได้ชุดคำสั่งดังภาพข้างบนนะครับ จุดสังเกตุอีกแล้ว ก็คือ ผมจะปิด script ด้วยคำสั่ง commit records/request เพื่อเป็นการตอกย้ำให้ filemaker จบการทำงานของ script โดยสมบูรณ์ ซึ่งคำสั่งนี้มีความจำเป็นมาก หากเราต้องสร้างโปรแกรมที่ต้องให้ผู้ใช้กรอกข้อมูลผ่านทาง web browser แทน ซึ่งอันนี้ว่ากันทีหลังโน่นนนนนน ครับ

เมื่อเราได้ script สำหรับการสร้าง record ใหม่ พร้อมกับการ set ค่าของ order number แล้ว ขั้นตอนต่อไป ก็แค่เอา script นี้ไปใส่ให้แก่ปุ่ม "สร้างใบเสนอราคาใหม่" วิธีการก็แค่ click ขวาที่ปุ่ม "สร้างใบเสนอราคาใหม่" ใน layout mode

002

จากนั้นก็ให้ทำการเลือกคำสั่ง button setup แล้วก็ให้เลือกคำสั่ง perform script อีกที สุดท้ายก็ให้เลือกว่า จะให้มันทำงานด้วย script อะไร ในที่นี้ก็คือ script ชื่อ set order number นั่นเอง

003

เมื่อทำการ set script ให้ปุ่มแล้ว ก็ให้เข้าสู่ browse mode เพื่อทำการกดปุ่ม "สร้างใบเสนอราคาใหม่"

filemaker ก็จะทำตาม script ที่เราเลือกเอาไว้ โดยสร้าง new record แล้ว set ค่าให้ record number จากนั้น เราพร้อมที่จะทดลองใส่ชื่อลูกค้าแล้ว

อย่างแรก ให้ลองใส่ชื่อลูกค้า ที่เราทราบว่ามันมีอยู่ในฐานข้อมูลลูกค้าสิ จะพบได้ว่า มันยากส์ นะที่จะจำได้ว่า ชื่อลูกค้าแบบเป๊ะ ๆ ถ้าใส่ได้ตรง ข้อมูลส่วนที่มันเชื่อมกันไว้ มันก็จะโผล่ขึ้นมา ถ้าไม่ตรง ข้อมูลอื่นมันก็ไม่ขึ้น ก็เท่านั้นแหละ

005

รูปด้านบน จะเห็นว่า ผมใส่ชื่อลูกค้า เป็น company a แล้วกด mouse ออกจาก field ของ customer name  หรือ กด tab ข้อมูลอื่นๆ ก็จะขึ้นมาเลย โดยอัตโนมัติ แต่มันไม่สะดวกตรงที่เราต้องจำชื่อลูกค้าให้ถูกต้องแบบเป๊ะๆ เลย

จะเห็นว่า ตรงนี้มันมีปัญหา file maker ก็ได้ทำเตรียมการแก้ไขไว้ให้แล้ว ซึ่งจะดีไหมถ้าเราสามารถนำรายชื่อทั้งหมดที่อยู่ในฐานข้อมูลมาเป็น list ให้เลือก หรือไม่งั้นก็ พิมพ์แค่ชื่อขึ้นต้นนิดหน่อย แล้วระบบมันจะพยายามเติมเต็มชื่อนั้นให้เอง

วิธีการสั่งให้ field customer name มันสามารถแสดงรายชื่อ หรือ เติมเต็มรายชื่อได้ อย่างแรกเราก็ต้องสร้างรายชื่อ แม่นบ่อ ? การสร้างก็ไม่ยาก อย่างแรกก็ให้เลือก file --> manage -->  value list ตามภาพข้างล่าง

007

จากนั้นก็ให้เลือกสร้าง value list อันใหม่ โดยให้มันไปอ่านค่ารายชื่อทั้งหมดจาก table customer โดยให้ทำการอ่านจาก field customer name  เมื่อสั่งแบบนี้ filemaker ก็จะเอารายชื่อทั้งหมดที่ปรากฏใน field customer name มาเปลี่ยนเป็น value list ให้

008

009

010

เมื่อได้ value list แล้ว เราก็แค่บอกให้ field customer name ใน table order ใช้งาน value list ที่สร้างขึ้นมา โดยการ double click ที่ตัว field customer name ใน layout mode  ซึ่งมันก็มีทางเลือกในการแสดงผลหลายๆ แบบให้ลองเล่นกัน แต่ครั้งนี้ผมจะใช้งาน popup value list และ บอกให้มันเติมเต็มรายชื่อแบบอัตโนมัติ โดยการเลือกที่ Auto Complete ... ตามรูปครับ

006

011

012

เมื่อกลับเข้า browse mode ก็จะเห็นว่า เราสามรถใส่ชื่อลูกค้าลงไปได้ง่าย มาก มาก เมื่อเลือกชื่อลูกค้าได้แล้ว ข้อมูลที่เชื่อมเอาไว้ ก็จะถูกดึงมาแสดงโดยอัตโนมัติตามความประสงค์

001

ผลที่ได้จากการทดลองเลือก ลูกค้าชื่อ นาย ก ก็จะได้ดังรูปข้างล่าง

002

ต่อมาลองทดสอบโดยการพิมพ์ บ ใบไม้ ลงไปในช่องชื่อลูกค้า จะเห็นว่า filemaker จะเติมเต็มรายชื่อลูกค้าที่ขึ้นต้นด้วย บ ใบไม้ ให้ หากมีมากกว่า 1 รายชืื่อมันก็จะ แสดงเป็น list ให้เลือกนะขอรับ

003

เมื่อกด mouse ออกมา หรือ กด tab เราก็จะได้ข้อมูลของบริษัท ดวงจันทร์ จำกัด ออกมาเช่นเดียวกัน

คราวนี้ถามว่า ทำไมต้องกด mouse หรือ กด tab บน keyboard ก็เพื่อบอก filemaker ว่า เราสิ้นสุดการป้อนข้อมูลแล้วนะ ให้ลองไป check ดูว่าตรงกับข้อมูลที่มีไหม ถ้าตรงก็เอามาแสดง อะไรทำนองนี้แหละ ถามต่ออีกว่า กด enter บน keyboard ได้ไหม คำตอบคือ ได้แน่นอน ให้ทำอย่างนี้นะ

ให้ทำการ click ขวา ที่ field customer name ใน layout mode จากนั้นก็เลือก Field/control --> behavior

005

เมื่อเลือกได้แล้ว ก็ให้ check ถูกที่หน้า Tab key , Return key และ Enter key

006

จากนั้นก็ลองกลับเข้า browse mode เพื่อทำการเลือกใส่ข้อมูลในช่องของชื่อลูกค้าอีกที ก็จะเห็นว่า เราสามารถกด key enter หรือ key return บน keyboard ก็ได้ เพื่อให้ filemaker รับรู้ว่า เราได้สิ้นสุดการป้อนข้อมูลแล้ว

บทความอื่นๆ