ขอคำสั่งเปิดแท็บเป้าหมายที่เราต้องการด้วยค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 2,870   11
URL.หัวข้อ / URL
ขอคำสั่งเปิดแท็บเป้าหมายที่เราต้องการด้วยค่ะ

มาขอรบกวนอีกแล้วนะคะ / ห่างหายไปนาน

-หนูสร้างฟอร์มไวัฟอร์มหนึ่ง เป็นฟอร์มแบบที่มีแท็บย่อยอยู่ 3 แท็บ
-สมมติชื่อฟอร์มว่า Frm_Master
-ในฟอร์มก็มีอยู่ 3 แท็บ สมมติชื่อแท็บว่า แท็บ-1 , แท็บ-2 , และ แท็บ-3
โดยปกติมันจะเปิดไปอยู่ที่แท็บแรกเสมอ หนูไม่อยากให้เป็นแบบนั้นค่ะ

*ความต้องการของหนูคือ อยากได้คำสั่ง ให้เปิดฟอร์ม Frm_Master แล้วให้เปิดไปที่แท็บเป้าหมาย สมมติให้เปิดไปที่ แท็บ-2 ทันทีเลย ต้องเขียนคำสั่งอย่างไรคะ

-หนูเขียนไว้ : DoCmd.OpenForm ("Frm_Master") แล้วไปต่อไม่ถูกค่ะ

ขอรบกวนอาจารย์ด้วยนะคะ

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

1 @R13667
Tab control คือตัว frame ทั้งหมดที่ประกอบด้วย tab ย่อยข้างใน
ซึ่ง tab ย่อยข้างใน Access เรียกว่า Page

เข้าใจว่าต้องการให้ เมื่อเปิด form แล้วไปที่ page 2 ทันที
ใช้ code ตามนี้ครับ

[ชือTab].Pages("ชื่อ tab ย่อย").SetFocus
2 @R13669
ขอบคุณค่ะอาจารย์
ใช่ตามที่ อ. PichaiTC เข้าใจค่ะ
หนูจะลองเอาไปทำดูก่อนนะคะ

หนูยังไม่ทราบว่าจะไปเชื่อมต่อกับ DoCmd.OpenForm ("Frm_Master") อย่างไร
แต่น่าจะพอไหว ได้ผลอย่างไรแล้ว หนูจะเข้ามารายงานให้ทราบนะคะอาจารย์

ขอบคุณค่ะ
3 @R13671
ยังไม่ได้เลยค่ะอาจารย์

ทดลองดูหลายวิธี ล่าสุดหนูลองใช้แบบนี้

DoCmd.OpenForm ("Frm_Master")
[TabCtl0].Pages("Page19").SetFocus


ยังไม่ได้ค่ะอาจารย์ มันขึ้น error 2465 ไม่พบเขตข้อมูล 'l' ที่ถูกอ้างอิงถึงในนิพจน์ของคุณ

ไม่ทราบว่าหนูเข้าใจอะไรผิดในการระบุชื่อ [ชื่อ Tab] กับ ("ชื่อ tab ย่อย" ) หรือเปล่าคะ ไม่ทราบว่าต้องดูจากตรงไหน หนูพยายามหาดูแล้วก็พบตามที่ระบุค่
4 @R13672
คุณมาลีต้องเอาคำสั่ง [TabCtl0].Pages("Page19").SetFocus ไปไว้ในฟอร์ม frm_master ในเหตุการณ์ onload ครับ
5 @R13673
เย้..ได้แล้ว แต่ว่า...ยังได้ ไม่ตรงตามที่ต้องการค่ะ
หนูอาจอธิบายความต้องการที่แท้จริง ไม่ชัดเจนตั้งแต่ต้น ต้องขออภัยด้วยนะคะ

-ตามที่ อ.ditasilk แนะนำ ทุกครั้งที่สั่งเปิดฟอร์ม มันจะไปอยู่ที่แท็บ Page2 เสมอ
-แต่ในความต้องการของหนูคือ ไม่แน่นอนเสมอไปว่าต้องไปที่ Page2 เท่านั้น บางครั้ง ก็ต้องการให้มันไปที่ Page1 หรือ Page3 ตามปุ่มที่เราคลิก คือ

-คลิกปุ่มที่1 : ให้เปิดฟอร์ม Frm_Master แล้วไปโฟกัสอยู่ที่ Page1
-คลิกปุ่มที่2 : ให้เปิดฟอร์ม Frm_Master แล้วไปโฟกัสอยู่ที่ Page2
-คลิกปุ่มที่3 : ให้เปิดฟอร์ม Frm_Master แล้วไปโฟกัสอยู่ที่ Page3

-ประมาณนี้ค่ะ (หนูแก้ไขชื่อ Page ใหม่เพื่อให้สมาชิกผู้อื่นได้เข้าใจตามง่ายขึ้น)
-กรณีนี้ หากไปผูกไว้ที่ onload มันจึงยังได้ไม่ตรงตามที่ต้องการค่ะ

ขอรบกวนอีกหน่อยนะคะ
6 @R13675
ถ้าเขียน code จาก Form อื่น ต้องอ้างถึง Form object ก่อนครับ

Sub cmd1_Click()
    DoCmd.OpenForm ("Frm_Master")
    Forms("Frm_Master").[TabCtl0].Pages("Page1").SetFocus
End Sub
7 @R13676
เย้..เยี่ยมเลยค่ะอาจารย์ ได้เรียบร้อยตามต้องการ

ปิดงานได้แล้ว...

ขอบคุณ อ.ทั้งสองท่านอย่างสูงค่ะ
8 @R13683
เป็นตัวเลือก อีกแบบ
Sub cmd1_Click()
    DoCmd.OpenForm "Frm_Master", , , , , , "Page1"
End Sub
Sub cmd2_Click()
    DoCmd.OpenForm "Frm_Master", , , , , , "Page2"
End Sub
Sub cmd3_Click()
    DoCmd.OpenForm "Frm_Master", , , , , , "Page3"
End Sub

ที่ Frm_Master เหตุการณ์ load

Private Sub Form_Load()
           [TabCtl0].Pages(OpenArgs).SetFocus
End Sub
9 @R13685
มายืนยันให้เพื่อนๆที่สนใจว่า ได้ทดลองแล้ว วิธีของ อ.ditasilk อีกวิธีนี้ก็ให้ผลได้เช่นเดียวกันค่ะ

เป็นตัวเลือก อีกแบบ
Sub cmd1_Click()
    DoCmd.OpenForm "Frm_Master", , , , , , "Page1"
End Sub
Sub cmd2_Click()
    DoCmd.OpenForm "Frm_Master", , , , , , "Page2"
End Sub
Sub cmd3_Click()
    DoCmd.OpenForm "Frm_Master", , , , , , "Page3"
End Sub

ที่ Frm_Master เหตุการณ์ load

Private Sub Form_Load()
           [TabCtl0].Pages(OpenArgs).SetFocus
End Sub

ขอบคุณอีกครั้งค่ะอาจารย์
10 @R13686
วิธีของคุณ ditasilk เป็นวิธีที่ดีครับ
แนะนำว่าใช้วิธีนี้เลยครับ เวลาแก้ไข form จะทำให้ง่ายกว่าครับ
11 @R13857
ขอบคุณครับ หาวิธีทำแบบนี้อยู่เหมือนกัน
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2978s