อ้างอิงหน้าสุดท้ายอย่างไรครับ
กระทู้เก่าบอร์ด อ.Yeadram

 1,288   10
URL.หัวข้อ / URL
อ้างอิงหน้าสุดท้ายอย่างไรครับ

ในรายงานนะครับผมมี Textbox อยู่อันหนึ่ง ขึ้นทุกหน้า ผมอยากให้หน้าสุดท้ายไม่ขึ้น
ต้องเขียนโค๊ตยังงัยครับ ผมอ้างอิงหน้าสุดท้ายไม่ถูก LastPages หรือ อะไรครับ

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

1 @R06317
onprint event

if me.page=me.pages then...

ลองดูครับ ยังไม่ได้ลอง คุ้นๆ อย่างนี้ครับ
จริงๆ แล้วการเขียนโค้ดในเหตุการณ์ของรายงานนี่ ต้องเป็น อ.สันติสุข นะครับ ชัวร์สุด
2 @R06318
ลองแล้วครับไม่ได้ครับ

Private Sub Report_Activate()
        If Me.Page = Me.Pages Then
               Me.Lbott.Visible = False
        End If
End Sub

มัน Visible = False ทุกหน้าเลยครับ
3 @R06319
กรรม!
คุณจะใช้มันได้ในเหตุการณ์ on print หรือ on format เท่านั้นครับ เหตุการณ์อื่นมันยาก ต้องทำความเข้าใจ มันก่อน
on activate น่ะ มันเหตุการณ์อะไร รายงานกำลังทำอะไร มันโหลดข้อมูลยังไม่เสร็จ มันจะรู้ได้อย่างไร ว่าข้อมูลทั้งหมดต้องแสดงกี่หน้า ดังนั้น มันหาค่า pages ออกมายังไม่ได้หรอกครับ

ลองนี่
สมมติว่า textbox ของคุณชื่อ text49 วางไว้ในส่วน page header นะครับ
ให้คุณเขียนโค้ดในเหตุการณ์ของ page header ครับ อย่างนี้
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
If Me.Page = Me.Pages Then
Me.PageHeaderSection.Controls("text49").Visible = False
Else
Me.PageHeaderSection.Controls("text49").Visible = True
End If

End Sub


เหตุการณ์ on Format เท่าที่ผมเข้าใจ ก็คือ การจัดแต่งหน้าตาของรายงาน (ซึ่งมันจะจัดแต่ง เรียงร้อยข้อมูลออกมาได้ก็ต่อเมื่อมันโหลดข้อมูลต่างๆ ตามเงื่อนไขมาจนครบแล้ว เข้า RAM มาหมดแล้ว และนั่นก็หมายความว่า มันรู้??ล้วว่า ข้อมูลทั้งหมด ต้องแสดงกี่หน้า และขณะนี้มันกำลังจะจัดแต่งเรียงร้อยข้อมูลของหน้าที่เท่าไหร่)
4 @R06321
ขอบคุณอาจารย์ yeadram ยังเป็นที่พึ่งของผมได้ตลอดนะครับ
อย่างแรกผมไม่ค่อยทราบข้อมูลที่อาจารย์บอกมากเท่าไหร่ แต่เคยทำแบบลองผิดลองถูกอยู่ แล้วมันใช้งานได้
ผมเลยนึกว่ามันจะใช้ได้ แค่รู้ว่า หน้าสุดท้ายเค้าเรียกว่าอะไรก็น่าจะใช้ได้ เพราะส่วนใหญ่ผมเรียนรู้
จากการลองผิดลองถูกทำได้ก็โอเค โดยไม่รู้ที่มาที่ไปเลยแม้แต่น้อย ทุกอย่างที่อาจารย์สอนผม หรือคนอื่น ผมอ่านทุกครั้ง เข้าใจบ้างไม่เข้าใจบ้าง แต่ก็พยายามอ่าน และลองทำ
ส่วนอันนี้ ลองทำแล้ว ยังออกมาเหมือนเดิมครับ คือออกทุกหน้าครับ
5 @R06323
โค้ดที่ผมให้ไป ผมทดสอบแล้วที่เครื่องผม มันทำได้แฮะ
แต่ของคุณ UN บอกว่าไม่ได้ผม ก็งง ซิครับ
งั้นคงต้องรอ อ.สันติสุขแล้วครับ
6 @R06325
ได้แล้วครับ

ผมเอาออกสองบรรทัด
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
   If Me.Page = Me.Pages Then
        Me.PageHeaderSection.Controls("text49").Visible = False
   End If
End Sub
แบบนี้ได้เลยครับ

ขอบคุณอาจารย์ yeadram มาครับ
7 @R06326
เพิ่มเติมอีกนิดครับผมทราบแล้วว่าทำไม่ของอาจารย์ถึงได้
ตัดสองบรรทัด ไม่เกี่ยวครับ แต่เพราะผมเพิ่ม Control สองตัว ให้ =Page และ =Pages แล้วใช้สูตรอาจารย์ได้เลย อาจารย์คงมี Control ที่บอกจำนวนหน้าอยู่ก่อนแล้ว แต่ผมไม่มี
8 @R06327
พรุ่งนี้ผมอาจไม่ได้เข้ามาทั้งวัน ยังไม่แ่น่ใจครับ อ.Yeadram หรือ อ.ท่านใดที่ตอบได้ก็ตอบไปเลยครับ ทางที่ดี เอาโค้ดที่เขียนมาแสดงให้ดูจะดีที่สุดครับ และ Visible property ของ textbox ที่จะแสดง (Lbott ใช่ไหม) กำหนดไว้ใน Property sheet เอาไว้เป็นค่าอะไรครับ

.. อีกอย่าง ผมไม่ชัวร์เรื่องรายงานหรอกครับ เพราะ Access มันทำงาน (โดยเฉพาะเรื่องรายงาน) ค่อนข้างจะปกปิด จะเห็นได้ว่า event ของรายงานนั้นมีน้อยมากและอธิบายก็ไม่ชัดเจนเท่าไหร่ ความสลับซับซ้อนก็เยอะในบางกรณี ก็เข้าใจว่าเพราะต้องสามารถรองรับการปรับเปลี่ยนความสูงของแต่ละ section ได้ตามเงื่อนไข ณ ขณะออกรายงานเลย จึงทำให้บ่อยครั้งที่มันทำงานต่างจากที่เราคาดคิดไว้มากครับ ผลก็ได้ไม่ตรงกับที่ต้องการด้วย
9 @R06328
ตกลงได้แล้วนะครับ
10 @R06329
ขอบคุณอาจารย์สันติสุขครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3240s