คำสั่ง Auto Resize
กระทู้เก่าบอร์ด อ.Yeadram

 1,547   9
URL.หัวข้อ / URL
คำสั่ง Auto Resize

ผมเลือก Auto Resize ใน popertie เป็น Yes
ในฟอร์ม ผมมี Combo box เลือกปีที่ออกรายงาน เมื่อผมเลือกปี
จำนวนเรคคอร์ด ก็จะมีมากน้อยตามปี ในครั้งแรกที่เปิดฟอร์ม สมมุติว่า
มีจำนวน 10 เรคคอร์ด แต่เมื่อผมเลือกปี อื่นๆ ที่จะออกรายงาน สมมุติว่า
มี 20 เรคคอร์ด ข้อมมูลก็จะล้นหน้า

มันมีคำสั่ง ให้ฟอร์ม Auto Resize เมื่อเลือกข้อมูลเรียบร้อยแล้วมั้ยครับ

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

1 @R16596
เข้าใจว่าเป็น Continuous Form หรือ Datasheet Form ใช่ไหมครับ คงต้องคำนวนเอา โดยความสูงของฟอร์ม = ความสูงของ Form's Header section + (จำนวนเรคอร์ด x ความสูงของ Form's Detail section) + ความสูงของ Form's Footer section

ก็จะได้เป็น

Me.InsideHeight = Me.Section(acHeader).Height + (จำนวนเรคอร์ด * Me.Section(acDetail).Height) + Me.Section(acFooter).Height

แต่อย่างไรก็ตาม ควรกำหนดจำนวนเรคอร์ดสูงสุดเอาไว้ด้วย ไม่อย่างนั้นอาจเกิด error ได้
2 @R16598
ความสูงหน่วยเป็น อะไรครับ อาจารย์ ลองเป็น Cm มันหายไปเลย
3 @R16599
ขอโทษครับอาจารย์ ได้แล้วครับ ผมไปทดสอบด้วยตัวเลขก่อน

พอดูดีๆ มันกำหนดไว้ให้แล้วครับ

ผมจะนับจำนวนเรคคอดด้วย Count(ขื่อtextbox) Err มันต้องใช้ว่าอะไรครับ
4 @R16600
ได้แล้วครับ อาจารย์ ผมไป Count ที่ Query ที่คำนวนเลยครับ

เจ๋งจริงๆ ขอบพระคุณมากครับ
5 @R16601
ความสูง/กว้างที่เราเห็นจาก Propert อาจแสดงเป็นนิ้ว,เซ็นติเมตร ตามแต่หน่วยที่ถูกกำหนดใน Control Panel แต่หน่วยที่ใช้ในการเขียนโปรแกรมจริงๆเราเรียกว่า Twips โดยที่ 1 นิ้วจะมี 1440 twips (หรือ 1 เซ็นติเมตร จะมี 567 twips)
6 @R16602
พอทดสอบ เจอปัญหาขึ้นมาตรง Action ของมันครับ

ผมควร จะใส่ ฟังชัน ใน Event ไหนครับ เก่าที่ระบุความสูงตายตัว

เมื่อ เลือกเงื่อนไขสุดท้าย ผมสั่งให้ Requery ใน Event AfterUpdate

ผมนำ ฟังชั่นนี้ ไปต่อท้าย Requery และใส่ Refresh ต่อท้ายด้วย

มันกลับนิ่ง แต่เมื่อเลือก ครั้งต่อไปมันกลับทำงาน
7 @R16603
อ่านแล้วไม่เข้าใจครับว่าเป็นยังไง คือ event ไหนเป็น event สุดท้ายที่ไปเรียกให้เกิดการแสดงเรคอร์ดตามปีที่เลือกใหม่ ก็ให้ต่อท้ายคำสั่งนั้นใน event นั้นๆ
8 @R16608
ถ้าเป็น DataSheet ผมใช้ Me.Move
แต่ต้องคำนวณเผื่อขอบของ window ด้วยครับ
9 @R16611
อาจารย์พิชัย ผมใช้ Continuous Form ครับขอบพระคุณครับ
อาจารย์สันติสุข ครับ ขั้นตอนของผมคือ
เลือกปี พ.ศ.แล้ว Query ถึงจะรัน ผมเอาฟังชั่นไปวาง ท้ายสุด
มันเหมือนกับว่า Query มันรันแล้ว ฟอมร์ยังไม่รัน Query

เช่น เลือกปี 56 มี 3 เรคคอ์ด ฟอร์มไม่ปรับขนาด(เลือกครั้งแรก)
เลือกปี 55 มี 2 เรคคอร์ด ฟอร์ปรับขนาด 3 เรคคอร์ด
เลือกปี 54 มี 2 เรคคอร์ด ฟอร์ปรับขนาด 2 เรคคอร์ด
เหมือนกับว่ามันอ่านค่าของการรัน Query ค้างไป 1 ครั้ง
เลยคิดว่า น่าจะเกิดจากขั้นตอนการรัน

ตอนนี้ทำได้แล้วครับ ลองผิดลองถูกอยู่ นาน
ผมเอา ฟังชั่น ไปไว้ที่ Event Form_Load
และใน Event AfterUpdate ของ Combobox เลือกปี
ผมเอา Call Form_Load ไปวางต่อ

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