ให้นาฬิกาที่สร้างในฟอร์มดินตลอดเวลา ใน access 2010
กระทู้เก่าบอร์ด อ.Yeadram

 2,773   5
URL.หัวข้อ / URL
ให้นาฬิกาที่สร้างในฟอร์มดินตลอดเวลา ใน access 2010

สร้างให้นาฬิกาเดินตลอดเวลาในฟอรม ของ access 2010 ยังไงครับ โดยใช้ text box
เลือกแหล่งควบคุม =time() ครับ
คือ 22:10:25    มันหยุดนิ่งเฉยๆ อยากให้ เลขวินาทีเดิน ไปเรื่อยๆครับ

5 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R20813
เลือก event จาก property form เป็น on timer > [Event Procedure]


Private Sub Form_Timer()
    text box = Time
End Sub

ไปที่ property อีกครั้งแล้วกำหนดที่ Timer Interval = 1000

แต่ไม่แนะนำให้ทำแบบนี้ครับเพราะ form มันจะ Calculate ตลอดเวลาครับ
2 @R20819
อื่ม!!!! ความเห็นส่วนตัวนะครับ ผมอยากให้เปลี่ยนความคิดที่ว่าการใช้ Timer Interval กินแรงเครื่องทำให้ไม่กล้าที่จะใช้มันอ่ะครับ เพราะจริงๆมันมีประโยชน์มากๆ สำหรับการเขียนโปรแกรมเชิงโครงสร้างอย่าง VB และไม่ใช่แค่เพียงทำเป็น นาฬิกา การกินแรงมันขึ้นอยู่กับว่า ณ On Time คุณให้มันทำอะไรมากกว่า แล้วถึงค่อยมาเรื่องของ Interval ความถึ่ที่ให้มันทำงาน
จริงๆ การ Sync ตามเวลามันมีแทบทุกโปรแกรมแหละครับเห็นชัดสุดคือพวก Browser เช่น IE, Firefox, โดยเฉพาะ Chrome จะถึ่จัดกว่าเพื่อน ประโยชน์ของมันคือ ยิ่งถึ่ยิ่งตอบสนองได้ดี ยิ่งเร็วกว่าโปรแกรมอื่น แต่แน่นอนก็กินแรงเครื่อง
ฉนั้นการใช้ On Time จริงๆแล้วไม่ได้น่ากลัวอะไร อยู่ที่การเขียนให้มันทำงานน้อยที่สุด ในความถึ่ที่เหมาะสม เช่น หากคุณแสดงเวลาอย่าง จขกท ที่ Timer Interal 1 วินาที โดย On Timer แค่แสดง เวลาปัจจุบัน Time() กินแรงเครื่องน้อยกว่าคุณเปิดหน้าเว็บค้างไว้เพียง 1 หน้า มาก
แล้ว Timer Interval มันสำคัญยังไง?
การเขียนโปรแกรมในปัจจุบัน แบ่งออกเป็น 2 ลักษณะหลักๆ คือ
1. การเขียนโปรแกรมเชิงโครงสร้าง (ภาษาในยุคเก่า คือ VB C# ด้วย)
การเขียนโปรแกรมเชิงโครงสร้าง (Structured Programming) อธิบายคร่าวๆ คือ มันจะแยกส่วนของข้อมูลจากฟังก์ชันอย่างชัดเจน เป็นการอ่านคำสั่งทีละบรรทัดๆ แล้วจึงค่อยไปกระทำต่อวัตถุตามลำดับที่คำสั่งต้องการ โดยยืดคำสั่งเป็นหลัก

2. การเขียนโปรแกรมเชิงวัตถุ (ภาษาในยุคใหม่ เช่น Java)
การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming) จะเขียนโปรแกรมโดยอ้างอิงโมเดลวัตถุ เป็นการอ่านคำสั่งของแต่ละวัตถุ แล้วกระทำตามคำสั่งในแต่ละวัตถุนั้นๆอย่างอิสระไปพร้อมกันได้เลย โดยสนใจวัตถุเป็นหลัก เราจึงสังเกตุเห็นได้ว่าหลายกรณีโปรแกรมเหล่านี้ต้องมีการใช้ Time Line ในการควบคุมจังหวะของแต่ละวัตถุ

จาก 2 ลักษณะของการเขียนโปรแกรม จะเห็นได้ว่า VBA ที่เราใช้จะเป็นแบบ ข้อ 1 เราไม่สามารถแหกกฏการทำตามคำสั่งทีละบรรทัด มาอ้างอิงเชิงวัตถุได้เลย แต่ๆ ถ้าสังเกตุดีๆ จะมีเพียงอย่างเดียวที่สามารถแหกกฏการเขียนโปรแกรมเชิงโครงสร้างนี้ได้ ก็คือ Timer Interval นั่นเอง เพราะมันจะไม่สนใจลำดับคำสั่ง มันสนใจแค่เวลา จึงพูดได้เล็กๆว่า มันเป็นวัตถุเดียวที่เราจะใช้เขียนแบบเชิงวัตถุได้ เหมือนโปรแกรมยุคใหม่ ผมจึงว่ามันสำคัญมากนะถ้าจะใช้ประโยชน์จากมัน
สังเกตุได้ง่ายๆว่า เกมส์ที่ใช้ภาษา VB หรือ C# จะหนีไม่พ้นต้องใช้เรื่องของ On Timer เราถึงจะสั่งให้วัตถุต่างๆ ทำงานพร้อมกันได้นั่นเอง แต่มันก็ไม่อาจเทียบเท่าโปรแกรมเชิงวัตถุจริงๆได้นะครับ แค่พอใช้ได้นิดหน่อย

และมี Trick อีกนิดใน MS Access คือ คุณสามารถใช้ Timer Interval หลายๆตัวโดยการสร้างซับฟอร์ม หลายๆตัวใน Main ฟอร์ม แล้วใช้ On Timer ให้เป็นประโยชน์ คุณจะสามารถเขียนโปรแกรมให้ดูเหมือนโปรแกรมเชิงวัตถุที่ทำงานหลายๆอย่างพร้อมกันได้เลยนะครับ

ปล. ผมอาจเขียนได้ งง เพราะไม่รู้จะอธิบายแบบสั้นๆยังไงอ่ะครับ ต้องขออภัยด้วย เพียงแต่ตามความเห็นส่วนตัวเห็นว่า On Timer มีประโยชน์มากสำหรับการเขียน MS Access ไม่อยากให้คิดว่ากินแรงเครื่องแล้วไม่ใช้มัน
3 @R20821
ขอบคุณมากครับ อาจารย์ทั้งสองท่าน
4 @R20829
ขอบคุณครับอาจารย์ TTT
     ที่ผมเข้าใจว่ามันกินทรัพยากรเครื่องเป็นเพราะผมเห็นว่าในแถบ Status จะขึ้น Calculate ซ้ำๆในหน้าจอครับเลยเข้าใจแบบนีครับ (จริงๆ ส่วนที่ทำงานตลอดก็จะเป็น Textbox = time อย่างที่อาจารย์ว่าครับ)

สำหรับ OO ผมจะลองศึกษาเพิ่มเติมนะครับจากตัวอย่างที่ยกมาดูน่าสนใจมากครับ
5 @R20831
ปัญหาหนึ่งของฟอร์มใน MS Access คือเรื่องของ Display หน้าจอครับ เหมือนจะยังเป็นแบบโปรแกรมสมัยก่อนอยู่ คือจะไม่แยกการรีเฟสแต่ละคอนโทรล จะใช้การรีเฟสทั้งหน้าต่างแทน ปัญหาคือ ทำให้เมื่อมีการเปลี่ยนแปลงที่ตัวคอนโทรลตัวหนึ่งคอนโทรลตัวอื่นๆอาจกระพริบตามจนสังเกตุเห็นได้ ทำให้ลำคาญลูกตาได้ครับ อันนี้ขึ้นอยู่กับความเร็วการ์ดจอ และคอนโทรลบนฟอร์มหากมีเยอะจะเห็นชัด
การแก้ปัญหานี้ ยกตัวอย่างหากเป็นการทำหน้าปัดแสดงเวลา ให้ทำเป็นฟอร์มใหม่ไม่ต้องผูกกับฐานข้อมูลใดๆ ทำแต่คอนโทรลแสดงเวลาเซ็ท Timer จัดขนาดให้พอดี ทำอะไรให้เสร็จ แล้วนำมาเป็นซับฟอร์มอีกที เสมือนเราทำ User Control ด้วยตัวเอง มันจะไม่กวนหน้าจอฟอร์มหลักเราได้ เพราะโปรแกรมมันจะมองเป็นคนละหน้าต่าง มันจึงจะแยกการรีเฟสหน้าจอให้ครับ ลองทดสอบได้ครับ เป็น Trick เล็กๆครับผม
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3467s