ยกเลิกคำเตือนใน Nodata ของรายงาน
กระทู้เก่าบอร์ด อ.Yeadram

 1,828   7
URL.หัวข้อ / URL
ยกเลิกคำเตือนใน Nodata ของรายงาน

Private Sub Report_NoData(Cancel As Integer)
MsgBox "No data found! Closing report."
    DoCmd.SetWarnings No
    Cancel = True
       
End Sub
เมื่อไม่มีข้อมูล
ก็จะมีคำเตือนแรก nodata found!closing report


หลังจากนั้น ก็จะมีำคำเตือนขึ้นมาอีก
ของ access เอง
แอคชั่น open report ถูกยกเลิก

ถ้าเราไม่ต้องการคำเตือนอันหลังนี้
ต้องไปสั่งในcode อย่างไรครับ

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

1 @R13661
แอคชั่น open report ถูกยกเลิก

มันแจ้งเตือนสำหรับคำสั่งก่อนหน้าครับ เช่น
คุณอาจใช้คำสั่งเปิดรายงานนี้มาจาก ปุ่มคำสั่งบนฟอร์มอื่นๆ
หรือคุณเรียกใช้คำสั่งเปิดรายงาน จาก macro
ถ้าคุณจะยกเลิกคำเตือนดังกล่าวต้องไปดักที่คำสั่งเหล่านั้นครับ
เฉพาะที่ตัวรายงานนี้ ไม่ต้องทำอะไรครับ มันปกติดีแล้ว

Private Sub Report_NoData(Cancel As Integer)
    MsgBox "No data found! Closing report."
    Cancel = True       
End Sub
2 @R13680
ยังหาวิธีไม่ได้เลยครับ
ไปดักทุกที่ด้วยคำสั่ง
set warnings no
ทั้งในรายงาน ทุกอีเวน
และในฟอร์มที่ใช้คำสั่งคลิกให้เปิดรายงาน

ขอบคุณครับ
3 @R13715
ไม่ทราบมีทางตรวจสอบอย่างอื่นหรือไม่
เพื่อยกเลิกคำเตือน แอคชั่น open report ถูกยกเลิก

ลองทำทุกอย่างที่เกียวกับการเปิดรายงานแล้ว
ทุกอีเวน แม้นแต่ในฟอร์มที่มีปุ่มกดเปิดสั่งพิ่มพ์รายงาน

ยังไม่ได้ผล
4 @R13717
ลองส่ง file เข้า mail มาให้ดูดีกว่าครับ
5 @R13723
Private Sub Command12_Click() On Error GoTo Err_Command12_Click Dim stDocName As String DoCmd.SetWarnings False stDocName = "RSPS2A4" DoCmd.OpenReport stDocName, acPreview Exit_Command12_Click: Exit Sub Err_Command12_Click: ' MsgBox Err.Description Resume Exit_Command12_Click ทำอย่างที่ อ.access hotline ก็ได้ครับ หรือ remark ตรง MsgBox Err.Description ไว้ก็จะไม่มีคำเตือนออกมาครับ(ดังที่ผม remark ไว้ให้ดูครับ) End Sub

code อันหลังนี้ ทำแล้วใช้ได้
ผมแก้ไปที่ปุ่ม preview ครับ Private Sub Command12_Click() On Error Resume Next Dim stDocName As String DoCmd.SetWarnings False stDocName = "RSPS2A4" DoCmd.OpenReport stDocName, acPreview End Sub

แต่อยากรู้อันแรก ที่ิคุณ badman แจ้งไว้ สงสัย
บอกว่าทำตามวิธีที่สองก็ได้
หรือไม่ก็ ใช้ remark ตรง Msgbox Err.Description (ดังที่ผมremarkไว้ให้ดูครับ)
ตรงนี้ครับ อยากรู้วา ไปremark ที่ตรงใหนครับ งง ๆ อยู่ หาไม่เจอ
6 @R13734
เอาอย่างนี้ครับ

Private Sub Command12_Click()
On Error Resume Next
DoCmd.OpenReport "RSPS2A", acPreview
End Sub

การใส่บรรทัดคำสั่ง On Error Resume Next นั่นคือการ "ดัก" ตามที่ผมให้ความเห็นไปในตอนต้นครับ

ที่อาจารย์ Badman กับ อาจารย์ access hotline (ที่คุณไปอ้างอิงมา) บอกไว้น่ะ สำหรับคนอื่นครับ คือคนที่เขาอยากยืดหยุ่น ว่า บางครั้งต้องการรู้ว่า มีอะไร error เขาจะปล่อยบรรทัดคำสั่ง
msgbox err.description
แต่ถ้าบางคน บางจังหวะ เขาไม่ต้องการให้มันขึ้นคำเตือนใดๆ เขาก็จะเบรคบรรทัดนี้ไว้

แต่ส่วนของคุณ คุณไม่ต้องการ คำเตื่อนใดๆ นอกจาก no data ของคุณเอง และไม่ต้องการจะยืดหยุ่นอะไรอีก ดังนั้น เอาสั้นๆ สองบรรทัดแบบที่ผมให้ไปนั่นเลยครับ

ถ้าตอนนี้ยังงง ยังตามไม่ทัน เอาไว้ก่อน ถ้าเจอมันบ่อยๆ เดี๋ยวจะเริ่มเข้าใจไปเองครับ ไม่ต้องรีบร้อนเข้าใจก็ได้ บางครั้งก็ข้ามๆ มันไปก่อน ให้งานมันลุล่วงไปก่อน ค่อยทำความเข้าใจกับมันทีหลังก็ได้มั้งครับ สู้สู้!
7 @R13737
ขอบคุณครับ
มันยากเหมือนกันสำหรับคนที่ใช้ระบบตัดแปะ
แต่ใช้ได้แล้วครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2004s