กระทู้เก่าบอร์ด อ.Yeadram
1,600 5
URL.หัวข้อ /
URL
บังคับให้ Save
ถ้าต้องการบังคับให้มีการ Save ก่อนออกจากฟอร์มทุกครั้งต้องเขียน Code VB อย่างไรค่ะ?ท่านอาจารย์ (ในEvent เลือกอะไรค่ะ?) กรุณาบอกด้วยค่ะ
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R03687
ถ้าเป็น bound form (คือฟอร์มที่ผูก RecordSource property เข้ากับเทเบิลหรือคิวรี่) เมื่อปิดฟอร์ม มันก็จะ save โดยอัตโนมัติอยู่แล้วครับ ไม่ต้องทำอะไร
2 @R03689
คือพอดีมนใช้ปุ่มsaveเป็นตัวAppQuery ค่ะซึ่งบ้างครั้งกลัวลืมปิดออกจากฟอร์มไปเลยทำให้ข้อมูลที่Appไปไม่แสดงในตารางที่ต้องการค่ะ
3 @R03690
- อะไรคือ AppQuery ครับ
- "ทำให้ข้อมูลที่Appไป" หมายความว่าอย่างไรครับ
ผมอ่านแล้วไม่เข้าใจทั้งประโยค กรุณาอย่าใช้ศัพท์แสงที่คิดขึ้นมาเองนะครับ คนอื่นจะไม่มีทางเข้าใจได้เลย
- "ทำให้ข้อมูลที่Appไป" หมายความว่าอย่างไรครับ
ผมอ่านแล้วไม่เข้าใจทั้งประโยค กรุณาอย่าใช้ศัพท์แสงที่คิดขึ้นมาเองนะครับ คนอื่นจะไม่มีทางเข้าใจได้เลย
4 @R03713
มนหมายถึงมีคำสั่ง Append Query ค่ะคือต้องการส่งข้อมูลเข้าตารางอื่นเพื่อใช้เป็นตัว link กันจุดประสงค์คือต้องการให้บันทึกเพื่อส่งข้อมูลไปตารางอื่นค่ะ
**ปล.ขอโทษนะค่ะคุณสันติสุก มนใช้ศัพท์ไม่ถูกจึงทำให้เข้าใจผิดค่ะ ขอโทษอีกครั้งค่ะ
**ปล.ขอโทษนะค่ะคุณสันติสุก มนใช้ศัพท์ไม่ถูกจึงทำให้เข้าใจผิดค่ะ ขอโทษอีกครั้งค่ะ
5 @R03715
โอเคครับ ผมเข้าใจดังนี้คือ ปกติจะคลิกปุ่ม Save เพื่อสั่งให้ Append Query ทำงาน แต่ถ้าเกิดผู้ใช้ปิดฟอร์มไปโดยที่ยังไม่ได้คลิกปุ่ม Save ก็จะทำให้ Append Query นั้นๆไม่ได้ทำงาน ข้อมูลในระบบก็จะไม่ Consistency
ดังนั้นสิ่งที่ต้องทำคือ กำหนดตัวแปรขึ้นมาตัว เป็นตัวแปรในระดับ module เพื่อระบุว่า Append Query นั้นๆ ได้ทำงานไปแล้วหรือยัง เมื่อออกจากโปรแกรม ก็จะเกิด Form_Unload event procedure เราก็จะตรวจสอบตัวแปรนี้ ถ้าตัวแปรนี้ไม่ได้มีค่าซึ่งแสดงสถานะว่าผู้ใช้ได้ผ่านการคลิกปุ่ม Save มาก่อนหน้านี้แล้วหล่ะก็ เราก็เรียก Save_Click event procedure ให้มาทำงานก่อนจะออกจากฟอร์มครับ
โค้ดก็จะเป็นลักษณะนี้ครับ ผมสมุติว่าปุ่ม Save ชื่อว่า btnSave
ดังนั้นสิ่งที่ต้องทำคือ กำหนดตัวแปรขึ้นมาตัว เป็นตัวแปรในระดับ module เพื่อระบุว่า Append Query นั้นๆ ได้ทำงานไปแล้วหรือยัง เมื่อออกจากโปรแกรม ก็จะเกิด Form_Unload event procedure เราก็จะตรวจสอบตัวแปรนี้ ถ้าตัวแปรนี้ไม่ได้มีค่าซึ่งแสดงสถานะว่าผู้ใช้ได้ผ่านการคลิกปุ่ม Save มาก่อนหน้านี้แล้วหล่ะก็ เราก็เรียก Save_Click event procedure ให้มาทำงานก่อนจะออกจากฟอร์มครับ
โค้ดก็จะเป็นลักษณะนี้ครับ ผมสมุติว่าปุ่ม Save ชื่อว่า btnSave
Option Compare Database
Option Explicit
Dim mIsSaveClick As Boolean ' Flag ที่ทำหน้าที่บอกสถานะว่าปุ่ม btnSave ได้ทำงานแล้วหรือยัง
Private Sub Form_Load()
mIsSaveClick = False ' กำหนดค่าเริ่มต้นให้แก่ตัวแปรที่ทำหน้าที่เป็น flag
End Sub
Private Sub btnSave_Click()
...
...
สั่ง Append Query ให้ทำงาน
...
...
mIsSaveClick = True ' ระบุว่า btnSave_Click ได้ทำงานไปแล้ว
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Not mIsSaveClick Then ' ถ้าพบว่า btnSave ยังไม่ได้ถูกคลิก
Call btnSave_Click ' ก็เรียกมันให้ทำงาน
End If
End Sub
Time: 0.3250s