กระทู้เก่าบอร์ด อ.Yeadram
3,196 8
URL.หัวข้อ /
URL
ปิดฟอร์มที่เปิดค้างอยู่ ทุกฟอร์ม
สวัสดีคะอาจารย์ทุกท่าน
รบกวนด้วยนะค่ะ มีคำถามจ้า
1) เวลาเปิดฟอร์ม บางครั้งจะมีฟอร์มเปิดค้างอยู่ถ้าไม่ได้ปิด
เวลาจะปิดฟอร์มทีไม่ต้องการทำงานแล้ว ต้องไล่ปิดทีละฟอร์ม
สิ่งที่อยากได้จ้า
1) เป็นไปได้หรือเปล่าค่ะ เราจะซ่อนไว้ แต่ไม่ใช่การ ย่อไว้
เพราะบางครั้งเราต้องการกลับแก้ไขข้อมูลที่ทำในฟอร์ม
แรกก่อนหน้านี้จ้า ก็จะสามารถเรียกขึ้นมาใหม่อีกครั้ง
โดยไม่ต้องไปคีย์ข้อมูลใหม่
2) อยากทราบว่า มีคำสั่งอะไรที่สามารถไล่ปิดฟอร์มเอง
ทั้งหมด ทุกฟอร์มที่เปิดอยู่ และนะจ๊ะและจะยกเว้นสัก
ฟอร์มได้หรือไม่ค่ะ ที่ไม่ต้องการให้ปิดจ้า
รบกวนด้วยนะค่ะ
รบกวนด้วยนะค่ะ มีคำถามจ้า
1) เวลาเปิดฟอร์ม บางครั้งจะมีฟอร์มเปิดค้างอยู่ถ้าไม่ได้ปิด
เวลาจะปิดฟอร์มทีไม่ต้องการทำงานแล้ว ต้องไล่ปิดทีละฟอร์ม
สิ่งที่อยากได้จ้า
1) เป็นไปได้หรือเปล่าค่ะ เราจะซ่อนไว้ แต่ไม่ใช่การ ย่อไว้
เพราะบางครั้งเราต้องการกลับแก้ไขข้อมูลที่ทำในฟอร์ม
แรกก่อนหน้านี้จ้า ก็จะสามารถเรียกขึ้นมาใหม่อีกครั้ง
โดยไม่ต้องไปคีย์ข้อมูลใหม่
2) อยากทราบว่า มีคำสั่งอะไรที่สามารถไล่ปิดฟอร์มเอง
ทั้งหมด ทุกฟอร์มที่เปิดอยู่ และนะจ๊ะและจะยกเว้นสัก
ฟอร์มได้หรือไม่ค่ะ ที่ไม่ต้องการให้ปิดจ้า
รบกวนด้วยนะค่ะ
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R09139
ขอบคุณมากคะอาจารย์
เป็นพระคุณมากเลยคะ
เป็นพระคุณมากเลยคะ
3 @R09140
อาจารย์ค่ะ
ไม่ทราบว่าหนูทำอะไรผิดพลาดหรือเปล่าค่ะ
คือก็ยังต้องปิดทีละฟอร์มเหมือนเดิมคะ
รบกวนอาจารย์อีกครั้งจ้า
ไม่ทราบว่าหนูทำอะไรผิดพลาดหรือเปล่าค่ะ
คือก็ยังต้องปิดทีละฟอร์มเหมือนเดิมคะ
รบกวนอาจารย์อีกครั้งจ้า
4 @R09142
แล้วผมจะรู้ด้วยไหมล่ะเนี่ย ว่าคุณทำอะไรผิดพลาดไปหรือเปล่า
มันเป็นอย่างไรล่ะครับ
คุณทำอะไร ทำอย่างไร ทำที่ไหน ในตอนไหน เหตุการณ์ไหน มีแจ้ง error ตอนไหนบ้าง แจ้งว่าอย่างไร
มันเป็นอย่างไรล่ะครับ
คุณทำอะไร ทำอย่างไร ทำที่ไหน ในตอนไหน เหตุการณ์ไหน มีแจ้ง error ตอนไหนบ้าง แจ้งว่าอย่างไร
5 @R09143
จ้า ขอโทษนะค่ะ คือหนูลองเปิดฟอร์ม
ไว้ 2 ฟอร์มก็เลยสร้างปุ่ม
แล้ววางคำสั่งไว้ที่ Event on click
เข้าใจว่าพอคลิกที่ปุ่มฟอร์มที่เปิดไว้ก็น่าจะปิดหมด
ไม่ทราบว่าหนูเข้าใจถูกหรือเปล่าค่ะ
ส่วนฟ้อง error ไม่มีจ้า รบกวนจารย์ด้วยนะค่ะ
Private Sub Command2_Click()
Dim I As Integer
Dim frm As Form
I = 0
For Each frm In Forms
DoCmd.Close acForm, frm.Name, acSaveYes
I = I + 1
Next
' MsgBox "Closed " & I & " Form(s)"
End Sub
ไว้ 2 ฟอร์มก็เลยสร้างปุ่ม
แล้ววางคำสั่งไว้ที่ Event on click
เข้าใจว่าพอคลิกที่ปุ่มฟอร์มที่เปิดไว้ก็น่าจะปิดหมด
ไม่ทราบว่าหนูเข้าใจถูกหรือเปล่าค่ะ
ส่วนฟ้อง error ไม่มีจ้า รบกวนจารย์ด้วยนะค่ะ
Private Sub Command2_Click()
Dim I As Integer
Dim frm As Form
I = 0
For Each frm In Forms
DoCmd.Close acForm, frm.Name, acSaveYes
I = I + 1
Next
' MsgBox "Closed " & I & " Form(s)"
End Sub
6 @R09144
ลองใหม่อีกทีครับ
Private Sub Command2_Click()
Dim i As Integer
Dim frm As Form
Dim ar()
i = 0
For Each frm In Forms
ReDim Preserve ar(i)
ar(i) = frm.Name
i = i + 1
Next
For i = 0 To UBound(ar)
If ar(i) <> Me.Name Then DoCmd.Close acForm, ar(i)
Next
End Sub
7 @R09145
สว้สดีคะอาจารย์
ด้วยความความขอบนะค่ะ
ได้แล้วคะ.....ทุกฟอร์มที่เปิดอยู่จะปิดหมดจ้า
ยกเว้นถ้าทำปุ่มปิดที่ฟอร์มใด ฟอร์มนั้นจะไม่ปิดจ้า
แต่แก้ไขโดย วางคำสั่งไว้ที่ เหตุการณ์ on close แทนจ้า
และที่ปุ่มก็ใช้คำสั่ง Docmd.close แทนจ้า
ข้าน้อยนับถือ
ว่าแต่อาจารย์เป็นคนที่ไหนน้อ 555
ด้วยความความขอบนะค่ะ
ได้แล้วคะ.....ทุกฟอร์มที่เปิดอยู่จะปิดหมดจ้า
ยกเว้นถ้าทำปุ่มปิดที่ฟอร์มใด ฟอร์มนั้นจะไม่ปิดจ้า
แต่แก้ไขโดย วางคำสั่งไว้ที่ เหตุการณ์ on close แทนจ้า
และที่ปุ่มก็ใช้คำสั่ง Docmd.close แทนจ้า
ข้าน้อยนับถือ
ว่าแต่อาจารย์เป็นคนที่ไหนน้อ 555
8 @R09146
ขอแก้ความเข้าใจใหม่คะอาจารย์ข้าน้อยอ่อนหัดนัก
If ar(i) <> Me.Name Then DoCmd.Close acForm, ar(i)
ความหมายก็คือ ไม่ให้ปิดฟอร์มตัวเอง นอกนั้นให้ปิดหมดจ้า
ดังนั้นถ้าไม่อยากให้ปิดฟอร์มไหน
Me.Name ก็เปลี่ยนเป็นชื่อฟอร์มที่ไม่อยากให้ปิดนั้นเองจ้า
If ar(i) <> Me.Name Then DoCmd.Close acForm, ar(i)
ความหมายก็คือ ไม่ให้ปิดฟอร์มตัวเอง นอกนั้นให้ปิดหมดจ้า
ดังนั้นถ้าไม่อยากให้ปิดฟอร์มไหน
Me.Name ก็เปลี่ยนเป็นชื่อฟอร์มที่ไม่อยากให้ปิดนั้นเองจ้า
Time: 0.3712s
Function clsform()
Dim I as integer
Dim frm as form
I = 0
For Each frm In Forms
DoCmd.Close acForm, frm.Name, acSaveYes
I = I + 1
Next
' MsgBox "Closed " & I & " Form(s)"
End Function
ถ้าอยากยกเว้นไม่ให้ปิดฟอร์มใดๆ ก็ใส่ if ... then แทรกเข้าไปในลูป for...next
เช่น if frm.name <> "FrmLogin" then docmd.close ...
สิ่งที่อยากได้ ข้อที่ 1 ผมไม่เข้าใจ ว่าจะทำอย่างนั้นทำไม?
- อยากปิดก็ปิด อยากเปิดก็สั่งเปิดใหม่ดีกว่า จะซ่อนทำไม อาจเกิดปัญหาล็อคเรคคอร์ดเปล่าๆ
- การเปิดฟอร์ม จะสั่งให้เปิดเรคคอร์ดเก่าทันที แล้วแก้ไขข้อมูลได้เลย หรือจะเปิดแบบให้ไปที่ new record มันขึ้นอยู่กับคำสั่งที่ใช้ในการเปิดมากกว่า มันไม่บังคับอยู่แล้ว