การสร้างระบบฐานข้อมูลบน Pocket PC ด้วย SprintDB ตอนที่ 3

09-10-03 เวลา 13:24
ก็มาถึงตอนที่สามของบทความชุดนี้แล้วนะครับ ตอนหน้าก็จะเป็นตอนจบของบทความชุดนี้แล้ว หวังว่าท่านที่ติดตามมาตลอดคงจะสามารถนำไปประยุกต์ใช้กับงานของท่านได้อย่างดีนะครับ ท่านใดที่ติดปัญหาในการใช้งานโปรแกรม สามารถโพสถามลงในเว็บบอร์ดที่ PDA Mobiz ได้เลยครับ ผู้เขียนและทีมงาน PDA Mobiz ยินดีให้ความช่วยเหลือเต็มที่ครับ

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

ดังนั้นก่อนที่จะดูวิธีการทำระบบการคิดค่าคงเหลือขอให้ท่านผู้อ่านได้เพิ่มรายการซื้อ-ขายเพิ่มเติมเข้าไปอย่างน้อยสัก 5-6 รายการเพื่อจะได้เห็นภาพชัดเจนยิ่งขึ้นครับ

การสร้างตารางสำหรับคิดปริมาณสินค้าคงเหลือ

เช่นเดียวกับการสร้างฟอร์มที่ผ่านๆ มา แต่ในครั้งนี้ฟอร์มที่เราสร้างขึ้นจะใช้ในการหาปริมาณสินค้าคงเหลืออย่างเดียวเท่านั้นครับ

ให้ท่านสร้างตารางใหม่โดยใช้ข้อมูลดังนี้ครับ

ตารางชื่อ : OnHand

จากรูป ไม่มีการกำหนด Index เนื่องจากบทความตอนนี้ต้องการแสดงให้เห็นหลักการหาค่าคงเหลือเท่านั้น เมื่อท่านสามารถสร้างระบบงานตามบทความนี้ได้ก็สามารถนำไปปรับปรุงให้หาผลลัพธิ์ออกมาเป็น report ได้เช่นกันครับ

เมื่อสร้างตารางเสร็จแล้วเราก็จะมาสร้าง FORM กันครับ

การสร้าง Form สำหรับหาปริมาณสินค้าคงเหลือ

ทำการสร้าง Form ใหม่โดยเลือกให้ผูกกับ Table "OnHand" ครับ

จากนั้นใช้ข้อมูลในตารางด้านล่างนี้สร้าง Control ที่ต้องใช้ครับ

เมื่อสร้างเสร็จแล้วจะได้หน้าตาของฟอร์ม OnHand ดังรูปครับ ( วิธีการสร้างฟอร์มโดยละเอียดกรุณาอ่านจากบทความตอนที่ 2 )

จากรูปจะเห็นว่าแต่ละ Control จะมีชื่ออยู่ภายใน ซึ่งบนหน้าจอของท่านจะยังไม่มีก็เพราะท่านยังไม่ได้กำหนด Properties ให้กับแต่ละ Control นั้นเองครับ ต่อไปจะเป็นการกำหนดคุณสมบัติให้กับแต่ละ Control ครับ

( ผมขอข้ามการกำหนด Properties ของ Label ทั้งสามไปเนื่องจากมันเพียงทำหน้าที่ในการแสดง text เท่านั้น ให้ท่านทำการแก้ไข cation ให้ตรงกับในรูปดังวิธีในตอนที่ 2 ครับ )

1. Control "AllBuy", "AllSale"

Control ทั้งสองนี้ทำหน้าที่เหมือนๆ กันคือการรับผลบวกของยอดซื้อ / ยอดขายมาเก็บเอาไว้ชั่วคราวครับ

ให้ท่านคลิกที่ EditBox ที่สร้างขึ้น แล้วคลิกที่เมนู Properties / Control Properties ... ด้านล่าง จะปรากฏหน้าต่างคุณสมบัติดังรูปครับ

ในช่อง Name ให้กรอกคำว่า AllBuyf แล้วคลิกแทป Data เพื่อกำหนด Control Source ดังรูปครับ

เสร็จแล้วคลิกที่ปุ่ม OK เพื่อไปกำหนดคุณสมบัตืให้กับ Control "AllSale" และ "OnHand" ด้วยวิธีการเดียวกันครับ แต่ใส่ชื่อของ Control ดังตารางคุณสมบัติด้านบน และกำหนด ControlSource ให้เป็น onhand.allsale กับ onhand.onhand ตามลำดับครับ

2. Control "productf"

Control ตัวนี้มีความสำคัญที่สุดเพราะเราจะออกแบบให้การคำนวณทุกอย่างกระทำเมื่อได้เลือกชนิดสินค้าจาก dropdown ครับ

ให้ท่านคลิกที่ Control "Dropdown" แล้วคลิกที่เมนู Properties / Control Properties .. ด้านล่างครับ จากนั้นให้กำหนด Name เป็น "productf"

จากนั้นคลิกที่แทป "Data" แล้วคลิกที่ช่อง Control Source และคลิกที่ปุ่ม [...]

ในหน้าจอถัดไปให้พิมพ์ค่าลงไปตามรูปด้านล่าง หรือใช้วิธีเลือกเอาจาก Table -> Table Field ดังรูปก็ได้ครับ

จากนั้นคลิกที่ที่ปุ่ม OK เมื่อกลับมาในหน้า Properties : Data อีกครั้งให้ท่านคลิกที่ช่อง RowSource และคลิกที่ปุ่ม [...] ครับ

จากนั้นคลิกที่แทป SQL แล้วพิมพ์ชุดคำสั่งในภาพด้านล่างลงไป หรือคลิกเลือกตามลูกศรก็ได้ครับ

จากนั้นคลิกปุ่ม OK เพื่อกลับมายังหน้าจอ Properties : Data ควรจะมีหน้าจอดังรูปด้านล่างครับ

เสร็จแล้วคลิกที่แทป Event ด้านบนเพื่อกำหนดเหตุการณ์หลังจากคลิกเลือกชนิดสินค้าครับ

จากรูปให้คลิกที่ช่อง After Update แล้วคลิกที่ปุ่ม [...]

คำสั่งหาค่าผลรวมของสินค้าที่ซื้อเข้ามา

ต่อไปจะเป็นขั้นตอนการเพิ่มชุดคำสั่งเพื่อหาผลรวมของสินค้าที่ซื้อเข้ามาครับ

จากรูปให้คลิกที่ dropdown ที่ทำสัญลักษณ์เอาไว้ เพื่อกำหนด Command ครับ

จากรูปหลังจากกำหนด Command เป็น SetControl แล้วจะเห็นว่ามีรายการเพิ่มขึ้นมาคือ Control และ Expression ( เพื่อให้เรากำหนด Expression ให้กับ Control นั้นๆ ครับ ) ก็ให้ท่านคลิกที่ช่อง Control แล้วคลิกต่อที่ปุ่ม "E" ครับ

จากรูปกำหนด Control ที่จะถูกดำเนินการโดย Command "SetControl" ครับ ซึ่งท่านสามารถพิมพ์ลงไปตรงๆ หรือเลือกเอาจาก dropdown ก็ได้ครับ เสร็จแล้วคลิกที่ปุ่ม OK ครับ

จากรูปจะเห็นว่ามีชื่อ Control มาปรากฏในช่องแรกแล้วนะครับ จากนั้นให้ท่านคลิกที่ช่อง Expression แล้วคลิกต่อที่ปุ่ม "E" ครับ

จากรูปให้กำหนดฟังก์ชั่น DSUM(,,) และป้อนตัวแปรต่างๆ ดังนี้ครับ

DSUM([trans-buy].qtt,trans-buy,[trans-buy].product=&productf)

ฟังก์ชั่น DSUM(x,y,z) ใช้ในการหาผลรวมแบบมีเงื่อนไขโดยจะทำการรวมค่า ในฟิลด์ x ที่อยู่ในตาราง y เมื่อเงื่อนไข z เป็นจริง ดังนั้นจากคำสั่งด้านบน DSUM จะคืนค่าผลรวมของฟิลด์ Qtt ที่อยู่ในตาราง Trans-Buy โดยนำมาจากทุกๆ record ที่มีค่าของฟิลด์ product เท่ากับค่าที่เลือกจาก Control "productf" ครับ

เสร็จแล้วให้คลิกที่ปุ่ม OK ครับ

จากรูปฟังก์ชั่นได้ถูกกำหนดลงใน Expression เรียบร้อยแล้ว จากนั้นให้ท่านคลิกที่ปุ่ม [+] เพื่อเพิ่มชุดคำสั่งลงไปในคิวครับ

จากนั้นให้ท่านทำการเพิ่มชุดคำสั่งอื่นๆ ลงไปอีกด้วยวิธีการเดียวกันครับ

คำสั่งหาค่าผลรวมของปริมาณขายสินค้าที่เลือก

SetControl(&allsalef, DSUM([trans-sale].qtt,trans-sale,[trans-sale].product=&productf))

คำสั่งหาปริมาณสินค้าคงเหลือ

โดยการเอาผลรวมสินค้าซื้อหักออกด้วยผลรวมสินค้าที่ขายออกไป

SetControl(&onhandf, &allbuyf-&allsalef

เมื่อท่านได้เพิ่มชุดคำสั่งทั้งหมดเรียบร้อยแล้วจะได้หน้าต่างโปรแกรมดังรูปครับ

เสร็จแล้วให้คลิกที่ปุ่ม OK ครับ

เมื่อกลับมาที่หน้าจอ Properties : Event จะเห็นว่าในช่อง After Update จะมีเพียงแค่ ... ซึ่งนั่นแสดงว่ามีการกำหนดค่าลงไปแล้วครับ

เสร็จแล้วให้คลิกปุ่ม OK แล้วทำการบันทึกฟอร์มที่สร้างขึ้นมาในชื่อว่า frmOnhand ครับ

จากนั้นในหน้าจอ FORM คลิกเลือก frmOnhand แล้วคลิกที่ปุ่ม Open เพื่อทดลองใช้งานดูครับ

จากรูปให้ท่านคลิกที่ปุ่ม new record ก่อน เสร็จแล้วเลือกรายการสินค้าจาก dropdown ด้านบนครับ

โปรแกรมก็จะแสดงผลรวมของสินค้าที่ซื้อ สินค้าที่ขายและหาปริมาณสินค้าคงเหลือออกมาให้ครับ

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

ก็จบลงแล้วนะครับกับบทความตอนที่สามนี้ แม้ว่าจะยังมีบางส่วนที่น่าจะได้รับการปรับปรุงเพิ่มขึ้นอีกเช่น เพิ่มการตรวจสอบกรณียอดสินค้าขาย > สินค้าซื้อ, ทำการแสดงยอดสินค้าคงเหลือในลักษณะของรายงาน ฯลฯ แต่ผู้เขียนคิดว่าท่านผู้อ่านน่าจะสามารถนำไปปรับปรุงให้ดียิ่งขึ้นได้อย่างแน่นอนครับ


ผู้เขียนได้นำไฟล์ตัวอย่างมาให้ดาวน์โหลดกันด้วยครับ ซึ่งภายใน zip ไฟล์นั้นจะประกอบไปด้วยไฟล์งาน 2 ไฟล์คือ

- test.mdb เป็นไฟล์ที่เก็บตารางและข้อกำหนนดต่างๆ เมื่อโอนเข้าสู่ Pocket PC แล้วจะถูกแปลงให้เป็นไฟล์ชื่อ test.cdb ซึ่งโปรแกรม sprintdb สามารถเปิดใช้ได้ครับ

- test.raf เป็นไฟล์ที่เก็บ FORM ที่สร้างขขึ้นมา ซึ่งสามารถโอนเข้าสู่ Pocket PC ได้โดยตรงโดยไม่มีการแปลงรูปแบบ และ sprintdb สามารถเปิดใช้งานโดยอัตโนมัติเมื่อท่านเลือกใช้งานไฟล์ test.cdb ครับ

Download ไฟล์ตัวอย่างที่นี่

สำหรับไฟล์ test.raf จะต้องนำไปเก็บเอาไว้ในพาธที่กำหนดโดยโปรแกรม SprintDB ด้วยมิฉนั้นโปรแกรมจะมองไม่เห็นครับ หรือท่านอาจจะทำการแก้พาธที่เก็บ Form File ไปยังตำแหน่งปัจจุบันของ test.raf ก็ได้ครับ

การดูหรือแก้ไขพาธที่เก็บ Form File ให้เปิดจากเมนู File / Form File (.RAF) ครับ


o present by neko [ [email protected] ]
จำนวนผู้เข้าชม
Hosted by www.Geocities.ws

1