ขอโค้ด เปลี่ยนข้อความสถานภาพ เมื่อครบกำหนดค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 1,297   7
URL.หัวข้อ / URL
ขอโค้ด เปลี่ยนข้อความสถานภาพ เมื่อครบกำหนดค่ะ

ขอเรียนถามอาจารย์ดังนี้นะคะ

หนูมี ตาราง อยู่ตัวนึง ให้ชื่อว่า [ tbl_ข้อมูลการยืม ]

ในตารางดังกล่าวมีฟิลด์ที่เกี่บวข้องกันอยู่สองฟิลด์ดังนี้ค่ะ

ฟิลด์ที่-1 ให้ชื่อว่า กำหนดวันส่งคืน (ชนิดข้อมูลเป็น Date/Time)
ฟิลด์ที่-2 ให้ชื่อว่า สถานภาพ (ชนิดข้อมูลเป็น Text)

โดยในฟิลด์ที่-1 นั้น สำหรับระบุวันส่งคืนตามที่ตกลงกับผู้ยืมไว้ เช่น 15 มกราคม 2554
ส่วนในฟิลด์ที่-2 นั้น เป็นข้อความเริ่มต้นระบุไว้ว่า "ยังไม่ครบกำหนด" ค่ะ

ทีนี้..มาสู่ประเด็นปัญหาที่หนูอยากขอความช่วยเหลือดังนี้นะคะ

หนูอยากได้โค้ดไว้คอยตรวจสอบ ฟิลด์ที่-1 ว่าเมื่อถึงกำหนด >=Date() "15 มกราคม 2554" แล้ว ก็ให้ข้อความใน ฟิลด์ที่-2 เปลี่ยนจากเดิม "ยังไม่ครบกำหนด" เป็นข้อความใหม่ว่า "ครบกำหนดส่งคืนแล้ว" เท่านี้แหละค่ะอาจารย์

ขอความกรุณาด้วยนะคะ
ขอบคุณค่ะ

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

1 @R05612
ขอเพิ่มเติมอีกนิดค่ะ

หนูใช้แสดงผลข้อมูลนี้บนหน้าฟอร์ม แบบ แผ่นข้อมูลนะคะ

2 @R05613
ให้สร้าง macro เซฟชื่อ Autoexec

macro ตัวนี้จะทำ?านทันทีที่เปิดโปรแกรม (เราไม่ต้องไปสั่งอะไรมันอีก)
ใน macro ตัวนี้ หากต้องการเพิ่มคำสั่งใด ก็เพิ่มเข้าไปได้เลยตามต้องการ ขอให้เลือกเท่าที่จำเป็นเท่านั้น

สำหรับงานที่เราต้องการนี้ เราอาจจะใช้ได้สองวิธีคือ
1 เขียนเป็นฟังก์ชั่นเอาไว้ในโมดูล สมมติตั้งชื่อว่า function updStatusBook()
ใน macro autoexec ก็ให้เพิ่มคำสั่ง RunCode แล้วเติมอากิวร์เมนต์ว่า "updStatus()"

2 เขียนเป็นคิวรี่เอาไว้ ซึ่งเป็น คิวรี่แอคชั่น ให้อัพเดตข้อมูล สมมติว่า ตั้งชื่อว่า qrUpdStatusBook
ใน macro autoexec ก็เพิ่มคำสั่งเป็น OpenQuery ระบุอาร์กิวเมนต์ต่างๆ ให้ถึงคิวรี่ตัวนั้น

ขอให้เลือกอย่างใดอย่างหนึ่ง
ลักษณะการเขียนโค้ดก็คือ เขียน statement ภาษา SQL ขึ้นมา แล้วก็สั่งรัน ครับ
ลักษณะการทำคิวรี่ ก็เหมือนกัน ก็คือ statement อันเดียวกันนั่นแหละครับ

คงเขียนเป็นแล้วล่ะนะครับ ใช้ Where กำหนดเอาครับ
ดังนั้นเราก็ไม่ต้องไปกังวลเรื่องเกี่ยวกับฟอร์มเลยครับ เพราะข้อมูลจริงในตารางจะถูกปรับปรุงทุกครั้งที่เปิดโปรแกรมอยู่แล้วครับ
3 @R05614
อืม... หนูอ่านคำแนะนำของ อ.yeadram แล้วยังมึนๆ ไปต่อไม่ถูก...?
คงต้องรบกวนอาจารย์ช่วยขยายความ ลงรายละเอียดให้หนูอีกหน่อยนะคะ

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

SELECT T.[กำหนดวันส่ง], iif(T.[กำหนดวันส่ง] >= Date( ),"ครบกำหนดส่งคืนแล้ว","ยังไม่ครบกำหนด") AS สถานภาพ FROM [ tbl_ข้อมูลการยืม ] AS T WHERE ... ORDER BY ...
5 @R05616
ขอบคุณค่ะอาจารย์

ที่ อ. สันติสุข และ อ. yeadram แนะนำนั้น หนูยังไม่ค่อยเข้าใจวิธีนำไปใช้ค่ะ อาจารย์

สูตร

SELECT T.[กำหนดวันส่ง], iif(T.[กำหนดวันส่ง] >= Date( ),"ครบกำหนดส่งคืนแล้ว","ยังไม่ครบกำหนด") AS สถานภาพ FROM [ tbl_ข้อมูลการยืม ] AS T WHERE ... ORDER BY ..

ต้องนำไปใช้ส่วนไหนคะ


ขอบคุณค่ะ
6 @R05619
ก็เอา SQL statement นี้ไปเป็น RowSource ของ Datasheet Form โดยตรงก็ได้

หรือจะเอา SQL statement นี้ไปสร้างเป็น Query object ก่อนแล้วค่อยเอาชื่อของ Query object นี้ไปเป็น RowSource ของ Datasheet Form อีกทีนึงก็ได้ครับ
7 @R05621
ใช้ได้เรียบร้อยแล้วค่ะ

ขอบคุณอาจารย์ทั้งสองอีกครั้งนะคะ

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3220s