อยากบันทึกวันเวลาลง field อัตโนมัติ เมื่อมีการอัพเ
กระทู้เก่าบอร์ด อ.Yeadram

 1,921   19
URL.หัวข้อ / URL
อยากบันทึกวันเวลาลง field อัตโนมัติ เมื่อมีการอัพเ

รบกวนขอความรู้ครับ

ผมต้องการบันทึกวันเวลาลง field โดยอัตโนมัติ เมื่อมีการอัพเดทอีก field (ที่เป็น true/false)

เป็นต้นว่า ผมติ๊กถูกที่ form แล้ว อยากให้เก็บวันเวลาที่ติ๊กลงไปอีก field หนึ่ง(ที่สร้างไว้แล้ว)

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

1 @R21746
ถ้าเป็นฟอร์มที่ผูกเข้ากับเทเบิลหรือคิวรี่ แนะนำว่าให้ใส่โค้ดไว้ที่ BeforeUpdate event procedure ของฟอร์มเป็น

Private Sub Form_BeforeUpdate(Cancel As Integer)
   If not Me.NewRecord then
      If Me.ฟิลด์TrueFalse <> Me.ฟิลด์TrueFalse.OldValue then
        Me.ฟิลด์วันเวลา = Now()
      End If
   End If
End Sub

โค้ดนี้จะเก็บวันเวลาก็ต่อเมื่อ
1. ไม่ใช่เรคอร์ดใหม่
และ
2. ฟิลด์ TrueFalse มีค่าเปลี่ยนไป
2 @R21747
ขอบคุุณ คุณสันติสุข มากครับ
วันนี้จะลองทำดูครับ ^^
3 @R21752
Private Sub Form_BeforeUpdate()
   If Not Me.NewRecord Then
      If Me.[Hold] <> Me.[Hold].OldValue Then
        Me.[HoldDate] = Now()
      End If
   End If
End Sub

รบกวนถามอีกทีครับ แบบนี้ถูกหรือไม่ครับ
ฟิลด์ ทรู/ฟอลส์ ผมชื่อ [Hold]
อัพเดทใส่ฟิลด์ชื่อ [HoldDate]
มันไม่ได้ครับ ไม่อัพให้ครับ
4 @R21753
ถ้าไม่อัพเดต แต่ไม่มี error อะไร ลองเช็คสิครับว่าตรงตามเงื่อนไขที่ผมบอกหรือไม่

โค้ดนี้จะเก็บวันเวลาก็ต่อเมื่อ
1. ไม่ใช่เรคอร์ดใหม่
และ
2. ฟิลด์ TrueFalse มีค่าเปลี่ยนไป
5 @R21754
อยู่ในเงื่อนไขทั้ง 2 ข้อครับ

6 @R21755
ไปที่ฟอร์ม - เปิดโหมด Design View - กดปุ่ม F4 - ดูว่ามีตามที่รูปวงไว้หรือไม่
7 @R21764
มีครับ



เกรงใจคุณสันติสุขจังครับ ที่รบกวน ^^
8 @R21765
ตอนติ๊กไม่มี alert แต่พอปิด form แล้วขึ้น alert ครับ
9 @R21768
โค้ดที่ให้ไป จะยังไม่ทำงานตอนที่ติ๊กนะครับ แต่จะทำตอนที่เรคอร์ดกำลังจะถูกบันทึก เช่นเมื่อเราคลิกเมาส์เคอร์เซอร์ที่เรคอร์ดอื่น ยังไงก็ตาม ถ้าโค้ดทำงานถูกต้อง ก็ไม่ควรจะเกิด error ใดๆ ตอนอยู่ใน VBA editor ให้ทำการ Compile (อยู่ในเมนู Debug) โค้ดดูครับว่าจะมีข้อผิดพลาดอะไรฟ้องออกมาหรือไม่ ถ้าคลิก Compile ไม่ได้ แปลว่าได้ถูก Compile ไปแล้ว และไม่มีข้อผิดพลาดใดๆเกิดขึ้น คงต้องหาว่าเกิดจากอะไรอีกที

ปล. ผมพบลูกค้าอยู่ จะตอบอีกทีก็ดึกๆนะครับ
10 @R21771
ได้ผลยังไงแล้วแจ้งให้ทราบด้วยนะครับ
11 @R21774
compile แล้วครับ ติด



(table ใน field นี้เป็นชนิดวันที่ ที่ link มาจาก SQL server ครับ)

12 @R21775
แน่ใจหรือเปล่าครับชื่อ Hold และ HoldDate ถูกต้อง คอมไพล์แล้ว error ที่ไหน ก็เป็นชื่อในบรรทัดนั้นแหล่ะที่ผิด เวลาใส่ ไม่จำเป็นต้องมีเครื่อง [ ] สังเกตุจะเห็นว่าเวลาคีย์คำว่า Me. จะมีชื่อคอนโทรลแสดงออกมาให้เลือกด้วย ถ้าตรงนั้นไม่มีชื่อ Hold หรือ HoldDate ก็แปลว่าเป็นชื่ออื่นแล้ว เช็คอีกทีครับ
13 @R21776
ชื่อถูกนะครับ



complie แล้วติดตรง .OldValue ครับ

14 @R21777
ตกลงแปลว่า Hold ไม่ได้เป็นฟิลด์บนเทเบิลใช่ไหมครับ
15 @R21778
เป็น field บน table ของ SQL ครับ
แล้ว link table มาใช้บน access ครับ
16 @R21779
แปลว่าชื่อ checkbox บนฟอร์มเป็นชื่ออื่นที่ไม่ใช่ Hold ? ถ้าใช่ ก็เปลี่ยนเป็นชื่อตามที่ปรากฏบนฟอร์มนะครับ
17 @R21780
ขอบคุณครับ เวลาขึ้นแล้วครับ
แต่ write conflict แทน ^^


18 @R21781
ลองเปลี่ยนชื่อ HoldDate เป็นชื่อที่อยู่บนฟอร์มครับ ไม่อีกอย่างก็มีโปรแกรมอื่นไม่ว่าจะเครื่องเดียวกับเราหรือจากเครื่องอื่น ทำการแก้ไขเรคอร์ดที่ว่าระหว่างที่เราเริ่มแก้ไขครับ
19 @R21791
ขอบคุณมากครับ
รบกวนซะเยอะเลย
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2976s