กระทู้เก่าบอร์ด อ.Yeadram
1,288 10
URL.หัวข้อ /
URL
อ้างอิงหน้าสุดท้ายอย่างไรครับ
ในรายงานนะครับผมมี Textbox อยู่อันหนึ่ง ขึ้นทุกหน้า ผมอยากให้หน้าสุดท้ายไม่ขึ้น
ต้องเขียนโค๊ตยังงัยครับ ผมอ้างอิงหน้าสุดท้ายไม่ถูก LastPages หรือ อะไรครับ
ต้องเขียนโค๊ตยังงัยครับ ผมอ้างอิงหน้าสุดท้ายไม่ถูก LastPages หรือ อะไรครับ
10 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R06318
ลองแล้วครับไม่ได้ครับ
Private Sub Report_Activate()
If Me.Page = Me.Pages Then
Me.Lbott.Visible = False
End If
End Sub
มัน Visible = False ทุกหน้าเลยครับ
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 ครับ อย่างนี้
เหตุการณ์ on Format เท่าที่ผมเข้าใจ ก็คือ การจัดแต่งหน้าตาของรายงาน (ซึ่งมันจะจัดแต่ง เรียงร้อยข้อมูลออกมาได้ก็ต่อเมื่อมันโหลดข้อมูลต่างๆ ตามเงื่อนไขมาจนครบแล้ว เข้า RAM มาหมดแล้ว และนั่นก็หมายความว่า มันรู้??ล้วว่า ข้อมูลทั้งหมด ต้องแสดงกี่หน้า และขณะนี้มันกำลังจะจัดแต่งเรียงร้อยข้อมูลของหน้าที่เท่าไหร่)
คุณจะใช้มันได้ในเหตุการณ์ 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 บอกว่าไม่ได้ผม ก็งง ซิครับ
งั้นคงต้องรอ อ.สันติสุขแล้วครับ
แต่ของคุณ 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 มาครับ
ผมเอาออกสองบรรทัด
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 ที่บอกจำนวนหน้าอยู่ก่อนแล้ว แต่ผมไม่มี
ตัดสองบรรทัด ไม่เกี่ยวครับ แต่เพราะผมเพิ่ม Control สองตัว ให้ =Page และ =Pages แล้วใช้สูตรอาจารย์ได้เลย อาจารย์คงมี Control ที่บอกจำนวนหน้าอยู่ก่อนแล้ว แต่ผมไม่มี
8 @R06327
พรุ่งนี้ผมอาจไม่ได้เข้ามาทั้งวัน ยังไม่แ่น่ใจครับ อ.Yeadram หรือ อ.ท่านใดที่ตอบได้ก็ตอบไปเลยครับ ทางที่ดี เอาโค้ดที่เขียนมาแสดงให้ดูจะดีที่สุดครับ และ Visible property ของ textbox ที่จะแสดง (Lbott ใช่ไหม) กำหนดไว้ใน Property sheet เอาไว้เป็นค่าอะไรครับ
.. อีกอย่าง ผมไม่ชัวร์เรื่องรายงานหรอกครับ เพราะ Access มันทำงาน (โดยเฉพาะเรื่องรายงาน) ค่อนข้างจะปกปิด จะเห็นได้ว่า event ของรายงานนั้นมีน้อยมากและอธิบายก็ไม่ชัดเจนเท่าไหร่ ความสลับซับซ้อนก็เยอะในบางกรณี ก็เข้าใจว่าเพราะต้องสามารถรองรับการปรับเปลี่ยนความสูงของแต่ละ section ได้ตามเงื่อนไข ณ ขณะออกรายงานเลย จึงทำให้บ่อยครั้งที่มันทำงานต่างจากที่เราคาดคิดไว้มากครับ ผลก็ได้ไม่ตรงกับที่ต้องการด้วย
.. อีกอย่าง ผมไม่ชัวร์เรื่องรายงานหรอกครับ เพราะ Access มันทำงาน (โดยเฉพาะเรื่องรายงาน) ค่อนข้างจะปกปิด จะเห็นได้ว่า event ของรายงานนั้นมีน้อยมากและอธิบายก็ไม่ชัดเจนเท่าไหร่ ความสลับซับซ้อนก็เยอะในบางกรณี ก็เข้าใจว่าเพราะต้องสามารถรองรับการปรับเปลี่ยนความสูงของแต่ละ section ได้ตามเงื่อนไข ณ ขณะออกรายงานเลย จึงทำให้บ่อยครั้งที่มันทำงานต่างจากที่เราคาดคิดไว้มากครับ ผลก็ได้ไม่ตรงกับที่ต้องการด้วย
9 @R06328
ตกลงได้แล้วนะครับ
10 @R06329
ขอบคุณอาจารย์สันติสุขครับ
Time: 0.3240s
if me.page=me.pages then...
ลองดูครับ ยังไม่ได้ลอง คุ้นๆ อย่างนี้ครับ
จริงๆ แล้วการเขียนโค้ดในเหตุการณ์ของรายงานนี่ ต้องเป็น อ.สันติสุข นะครับ ชัวร์สุด