มีปัญหาเรื่องรายงานครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,302   8
URL.หัวข้อ / URL
มีปัญหาเรื่องรายงานครับ

มีเรื่องมารบกวนผู้รู้ทุกท่านครับ คือว่าผมสร้างรายงานภาษี มีผลรวมอยู่ด้านล่างโดยใช้คำสั่ง PageFooterSection_Print นะครับ ปัญหามันมีอยู่ว่าถ้าผมกด Print Preview โปรแกรมก็จะเข้าใจว่าเป็นการสั่งปริ้น จึงมีการทำงาน 1 รอบ แล้วพอผมสั่งปริ้นจริงๆ ตัวเลขที่ได้จากการคำนวณ มันก็จะผิดพลาดครับ แต่ถ้าผมสั่งปริ้นเลยโดยไม่ต้อง Preview ก่อน ก็จะไม่มีปัญหา
** ตัวเลขที่เกิดปัญหาเป็นตัวเลขที่รวมมาจากหน้าแรกแล้วมาบวกกับหน้าปัจจุบันครับ จึงไม่สามารถตั้งให้มันเริ่มต้นเป็น 0 ได้ครับ เลยงงเต็กเลยครับ

ขอรบกวนทุกท่านด้วยนะครับ


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

1 @R02720
ถ้าทำได้ เราจะพยายามไม่ทำการ คำนวน ด้วยตัวเองในรายงานนะครับ ไม่เฉพาะว่าเป็นมือใหม่แล้วจะทำให้เกิดปัญหา แม้แต่มือเก่าก็มีโอกาสปวดหัวได้เหมือนกันว่าทำไมตัวเลขมันเพี้ยนๆไป การทำผลรวม ถ้าได้ก็ให้ใช้ Running Sum property นะครับ คุณจะไ้ด้ค่าที่ถูกต้องแน่นอน

แต่ถ้ามีความจำเป็นต้องเขียนโปรแกรมให้บวกเอง คุณก็เข้าใจปัญหาได้ถูกต้องแล้วว่ามันเกิดเพราะ ไม่ได้ initialize นั่นเอง ... วิธีแก้คือ ให้ทำการ initialize ตามนี้

Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
    If Me.Page = 1 Then
        ชื่อตัวแปร = 0
    End If
End Sub

ดังนั้น แม้จะ print หลัังจาก preview ก็จะไม่เกิดปัญหาครับ
2 @R02721
ขอบคุณครับอาจารย์ แต่ว่ามันยังไม่สำเร็จครับ ต้องแก้ไขอีกหลายอย่าง และผมขอรบกวนอาจารย์หน่อยครับ ว่าถ้าจะสร้างเงื่อนไขเป็นหน้าสุดท้าย ต้องเขียนอย่างไรครับ รบกวนด้วยนะครับ
3 @R02723
ถ้าหมายถึงว่า พอ preview ก็ให้แสดงหน้าสุดท้ายเลย อย่างนี้ไม่เคยทำครับ แต่พอไปลองดูด้วยโค้ดนี้ ก็เหมือนจะทำได้

    If Me.Page = 1 Then
        SendKeys "{end}", False
    End If

โดยให้ใส่ไว้ที่ Print event ของ section สุดท้ายที่สามารถพิมพ์ได้ในหน้าที่ 1 เช่น

Private Sub PageFooterSection_Print(Cancel As Integer, PrintCount As Integer)
    ...
End Sub

ยังไม่แน่ใจว่า จะมีกรณีไหนที่อาจทำให้การทำงานนี้ ทำไม่ได้ ... ความจริงแล้ว แค่ไปหน้าสุดท้าย ผู้ใช้ก็คลิกแค่คลิกเดียวเท่านั้น ถ้าหาวิธีทางโปรแกรมมิ่งไม่ได้แล้ว ก็บอกให้ผู้ใช้คลิกเอา น่าจะง่ายกว่านะครับ
4 @R02725
อ๋อ! ไม่ใช่อย่างนั่นหรอกครับ คือว่าผมต้องการสั่งโปรแกรมว่า ถ้ารายงานอยู่หน้าสุดท้ายต้องทำอย่างไรครับ รบกวนอีกครั้งครับผม
5 @R02729
ผมยังไม่ค่อยเข้าใจคำถามเท่าไร(อาจจะเพราะยังอ่านไม่ดี)
แต่ว่าผมเคยเช็คหน้าสุดท้ายของ report โดยเขียนว่า

page = pages

ในการตรวจสอบว่าเป็นหน้าสุดท้ายหรือไม่

หวังว่าจะช่วย
6 @R02730
นั่นแหละครับที่ต้องการ
ขอบคุณมากมายครับผม
ปล.แต่เดี๋ยวต้องไปลองเขียนดูก่อนว่าจะดีหรือป่าว
7 @R02735
ขอบคุณคุณแดนมากเลยนะครับ ตอนนี้ปัญหาที่ถามไปแก้ได้แล้วครับ แต่เกิดปัญหาใหม่ขึ้นมาอีก คือว่า รายงานเจ้าปัญหาอันนี้แหละครับถ้าทุกรายการมีข้อมูลทุกฟิลด์รายงานก็จะไม่เกิดปัญหาครับ แต่พอหน้าใดหน้าหนึ่งมีรายการใดรายการหนึ่งที่ข้อมูลไม่สมบูรณ์จะทำให้ รายงานเกิดปัญหาครับ ผมจึงอยากทราบว่าถ้าเราจะเช็คจาก SQL ว่าถ้าข้อมูลว่างไม่ให้โชว์จะต้องเขียนอย่างไรครับ คือว่าผมเขียนอย่างนี้ WHERE ((inv_invoiceheader.amount)<>" ") แล้วมันเกิดปัญหาครับ ไม่เข้าใจ ??????????????
8 @R02736
คือว่า ขอประทานโทษทุกๆท่านด้วยนะครับ แทนที่ผมจะคิดอีกสักหน่อย ถ้าไม่ได้จริงๆถึงจะถาม คือว่าตอนนี้ผมทำได้แล้วครับ ง่ายนิดเดียวเองครับ ขอบคุณทุกท่าน
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3309s