Form.requery
กระทู้เก่าบอร์ด อ.Yeadram

 3,191   14
URL.หัวข้อ / URL
Form.requery

ผมมี Form ที่ใช้ Control แบ่ง Page โดยแบ่งเป็น 2 Page หลังจากเขียน Code Form.requery และกดใช้ในขณะอยู่ Page 2 Form จะเลื่อนไปที่ Page 1 อัตโนมัติครับ ผมแก้โดย เขียน Goto page2 เพื่อให้มันเด้งกลับลงมา แต่มันดูแปลกๆเพราะจะเด้งไปที่ Page1 แล้ว กลับมา Page2 มันดูตลกๆครับอยากให้ Form ไม่เด้งไป Page1 หลังจาก Code Form.requery ต้องทำอย่างไรครับ

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

1 @R18002
ให้ใช้คำสั่ง Painting

    Me.Painting = False
   ...
    Form.requery
   ...
    Me.Painting = True
2 @R18003
คำสั่งที่ใช้ในการ requery เขียนยังไง ผมลอง Me.Requery ก็ไม่เห็นจะเกิดอาการอย่างที่ว่าเลย
3 @R18007
อาจารย์สันติสุขครับ ผมเขียน Me.Form.Requery ครับ มันเหมือนกด F5 เลยครับคือ Refresh ทั้งหมดและเอา Record แรกมาโชว์ครับ ปัญหาคือขณะที่รันโค้ดดังกล่าวอยู่ Page2 มันเลยเด้งไป Page1 ที่ Textbox อันแรกอยู่ครับ
ขอบคุณอาจารย์ TTT ครับจะลองดูครับ
4 @R18008
ชักสงสัยแล้วว่า ที่บอกว่าสร้าง Page 2 คุณสร้างด้วย Page Break control หรือใช้ Page control กันแน่   แต่คงเป็น Page Break ซะแล้ว ถ้าอย่างนั้นให้ใช้โค้ดเพื่อไปยัง Page ที่เราต้องการด้วยคำสั่ง

    Me.Requery
    Me.GoToPage 2
5 @R18009
อาจารย์ TTT ครับไม่ work ครับผมเลยเอา Code ที่เขียนมาครับ

Private Sub btnQur_Click()
On Error GoTo btnQur_Click_Err



DoCmd.OpenQuery "qryDelGateReceiveTemps", acViewNormal, acEdit ลบข้อมูลในตาราง "qryDelGateReceiveTemps"
DoCmd.OpenQuery "qryAppendGateReceiveTemps", acViewNormal, acEdit 'เพิ่มข้อมูลเข้าไปในตาราง "GateReceiveTemps"

Me.Form.Requery 'เขียนบรรทัดนี้เนื่องจากพอมีการลบตารางแล้วเพิ่มข้อมูลในตารางเดิม มันโชว์ Delete# ที่ Textbox ทุกอันครับ ใช้ RefreshPage หรือ F9 ไม่หายครับ
DoCmd.GoToRecord , , acNewRec 'เขียนเนื่องจากพอใช้ Me.Form.Requery แล้ว Cursor วิ่งไปที่ Textbox แรก ซึ่งอยู่ Page1 และเอาเร็คคอร์ดแรกของชุดข้อมูลที่ดึงมาโชว์ครับ
DoCmd.GoToPage 2'เขียนเพื่อหลังจากขึ้นเร็คคอร์ดใหม่ให้มันวิ่งกลับมาที่ Page2 ครับ



btnQur_Click_Exit:
    Exit Sub

btnQur_Click_Err:
    MsgBox Error$
    Resume btnQur_Click_Exit

End Sub

ทำให้เวลา click ปุ่มแล้วมันจะดึงข้อมูลมาโชว์ใน List box แล้วเด้งขึ้นไปด้านบนหา Textbox อันแรกของ Form เสร็จแล้วทำให้ Page1 ขึ้นเร็คคอร์อใหม่จากนั้นวิ่งกลับลงมา Page2 ครับ แต่มันเร็วจนทำให้ User เห็นมันเด้งแว่บเดียวครับ แต่ผมรู้สึกขัดๆครับเพราะถ้ารันบนคอมที่ช้าๆอาจเห็นชัดขึ้นครับ
6 @R18011
อาจารย์สันติสุขครับผมใช้วิธีที่อาจาร์บอกครับมัน work แต่มันดูเด้งขึ้นเด้งลงแวบนึงครับ ประเด็นคือถ้าหลังจากที่ใช้ Deleted query แล้วใช้ Append query กับตารางเดียวกัน แล้วพอมีการเลือกเร็คคอร์ดที่ได้ Append มาซึ่งโชว์ใน Listbox ที่สร้างไว้และมีความสัมพันธ์กับ Form แบบ master field กับ child field แล้วมันจะโชว์ Deleted# ใน Textbox แทนที่จะเป็นข้อมูลจาก Listbox ครับ
ถ้าไม่รบกวนเกินไปอยากส่งไฟล์ไปให้อาจารย์ดูครับ อยากให้ช่วยแก้เรื่อง Popup "Invalid Procedure or Arguement" ด้วยครับ
7 @R18012
    On Error Resume Next
    Application.Echo False
    Me.Requery
    Me.GoToPage 2
    Application.Echo True

โค้ดนี้ยังอาจมีกระพริบบ้าง ไม่อยากบอกว่าทำให้ไม่กระพริบเลยทำไม่ได้ ผมเชื่อว่าทำได้ แต่มันต้องเขียนลึกลงไปถึงระดับฮาร์ดแวร์ของวีดีโอการ์ด ซึ่งผมไม่มีความรู้เรื่องนี้ครับ
8 @R18013
ขอบคุณมากครับผม
9 @R18014
Private Sub btnQur_Click()
On Error GoTo btnQur_Click_Err

Me.Painting = False

DoCmd.OpenQuery "qryDelGateReceiveTemps", acViewNormal, acEdit ลบข้อมูลในตาราง "qryDelGateReceiveTemps"
DoCmd.OpenQuery "qryAppendGateReceiveTemps", acViewNormal, acEdit 'เพิ่มข้อมูลเข้าไปในตาราง "GateReceiveTemps"

Me.Form.Requery 'เขียนบรรทัดนี้เนื่องจากพอมีการลบตารางแล้วเพิ่มข้อมูลในตารางเดิม มันโชว์ Delete# ที่ Textbox ทุกอันครับ ใช้ RefreshPage หรือ F9 ไม่หายครับ
DoCmd.GoToRecord , , acNewRec 'เขียนเนื่องจากพอใช้ Me.Form.Requery แล้ว Cursor วิ่งไปที่ Textbox แรก ซึ่งอยู่ Page1 และเอาเร็คคอร์ดแรกของชุดข้อมูลที่ดึงมาโชว์ครับ
DoCmd.GoToPage 2'เขียนเพื่อหลังจากขึ้นเร็คคอร์ดใหม่ให้มันวิ่งกลับมาที่ Page2 ครับ

Me.Painting = True

btnQur_Click_Exit:
    Exit Sub

btnQur_Click_Err:
    Me.Painting = True
    MsgBox Error$
    Resume btnQur_Click_Exit

End Sub

ลองดูครับ มันเป็นคำสั่งกำหนด Property ของฟอร์มให้หยุดไม่ต้องตอบสนองภาพจนกว่าจะอ่านโค๊ดเสร็จ ลองดูครับ
10 @R18015
ขอบคุณอาจารย์ทั้งสองท่านมากครับ ผมลองทั้งสองแบบให้ผลเหมือนกันเป๊ะเลยครับไม่เห็นความแตกต่าง ผมสามารถศึกษาเชิงลึกแบบนี้ได้จากตำราภาษาไทยมีหรือเปล่าครับไม่ค่อยถนัดภาษาอังกฤษครับ
11 @R18016
อื่ม ปัญหาของคุณคือ คุณอยากให้เมื่อคุณสั่ง Requery แล้ว ให้โปรแกรมกลับมา Focus อยู่ที่ตำแหน่งเดิมที่เคยโฟกัสอยู่โดยเหมือนมันไม่มีการขยับไปไหนเลยใช่ป่าวครับ โดยฟอร์มเป็นแบบ Continuous Forms
12 @R18017
ถ้าใช่ก็เป็นปัญหาคลาสสิกเลยครับ ผมมีวิธีแก้นะ แต่คุณต้องพอมีความรู้ใส่โค๊ดให้ถูกตามผมบอกอ่ะครับ
13 @R18018
ลองดูตัวอย่างไฟล์ที่นี่ครับ
https://www.dropbox.com/s/c42ziif031vvgg6/Requery.zip
14 @R18019
จะลองพยายามดูครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2732s