ช่วยด้วยครับ การแสดงค่าในตัวควบคุม
กระทู้เก่าบอร์ด อ.Yeadram

 690   4
URL.หัวข้อ / URL
ช่วยด้วยครับ การแสดงค่าในตัวควบคุม

ผมต้องการให้รายงานแสดงข้อมูลจากตัวควบคุม 1,2,3 ... จนถึง 20
ถ้ามีข้อมูลในตัวควบคุมเฉพาะ 1 หรือ 2 ก็ให้แสดงแค่นั้น ถ้าตัวที่ไม่มี ไม่ให้แสดง
ผมสร้างนิพจน์โดยใช้ =IIf แล้วไม่ได้

ไม่ทราบว่าต้องทำอย่างไรบ้างครับ

รบกวนช่วยด้วยครับ

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

1 @R23872
=IIf(Nz(Forms![ชื่อฟอร์ม]![ชื่อคอนโทรลบนฟอร์ม],"")="","",Forms![ชื่อฟอร์ม]![ชื่อคอนโทรลบนฟอร์ม])

เพิ่มเติม : แต่ถ้าเป็นผม เพื่อให้ง่ายต่อการจัดการและดูแลโค้ด ผมจะเขียนโค้ดลง event procedure On Format ของ section ของรายงานที่ค่าเหล่านี้จะไปแสดงแทน

Dim F as Access.Form

Set F = Forms("ชื่อฟอร์ม")

If Nz(F("ชื่อคอนโทรล1บนฟอร์ม"),"") <> "" Then Me("ชื่อคอนโทรล1บนรายงาน") = F("ชื่อคอนโทรล1บนฟอร์ม")
...
...
...
2 @R23874
รบกวนถามต่อครับ ลองแล้วได้ แต่พอใส่คอนโทรล 2 แล้วไม่ได้

=IIf(Nz(Forms![ชื่อฟอร์ม]![ชื่อคอนโทรลบนฟอร์ม],"")="","",Forms![ชื่อฟอร์ม]![ชื่อคอนโทรลบนฟอร์ม])

คอนไทรลที่ 2 ... ถึง 20 ใส่ต่อยังไงหรอคับ
ตัวอย่างของผม

=IIf(Nz([Forms]![Table1]![1],"")="","",[Forms]![Table1]![1])

แล้วถ้าจะให้ คอนโทรล 2 แสดงบรรทัดต่อมาทำไงครับ

แล้วก็1หน้ารายงาน แสดงข้อมูลได้ 10 คอนโทรล

และถ้าสมมติเกิน 1 หน้า (คอนโทรลที่่ 11 เป็นต้นไป) ให้แสดงต่อในหน้ารายงานที่2 ถ้ามีไม่เกิน10คอนโทรล ก็ให้แสดงแค่ 1 หน้า

แบบนี้ต้องทำอย่างไรคับ ติดมานานมากเลยครับตรงนี้

ขอบพระคุณล่วงหน้าครับผม
3 @R23875
การที่เราจะวางคอนโทรลเดียวแล้วให้ผูกกับข้อมูลหลายๆตัว ทำได้เฉพาะเมื่อผูกเข้ากับฟิลด์ในเทเบิลเท่านั้น ตัวรายงานก็จะดึงฟิลด์ทีละเรคอร์ดจากเทเบิลมาแสดง ทำให้เห็นเป็นหลายๆบรรทัดได้ แต่กรณีที่เอาค่าจากคอนโทรลบนฟอร์มมาใส่ในรายงาน ถ้ามี 20 คอนโทรล ก็ต้องสร้างเท็กซ์บ็อกซ์ 20 ตัวบนรายงานไล่ต่อกันลงมาเรื่อยๆ แล้วใส่ expression ลงใน Control Source property ของแต่ละคอนโทรลครับ ไม่ใช่ใส่ต่อกัน คอนโทรลตัวที่ 2 ก็ต้องมีค่าของ Control Source เป็น

=IIf(Nz([Forms]![Table1]![2],"")="","",[Forms]![Table1]![2])

แต่วิธีนี้จะไม่สามารถแสดงเฉพาะหน้าเท่าที่มีข้อมูลตามจำนวนคอนโทรลบนฟอร์ม ถ้าต้องการ ก็ต้องเอาข้อมูลจากคอนโทรลบนฟอร์มไปใส่ลงเทเบิลก่อนอย่างที่บอกไว้ตอนต้นครับ
4 @R23877
1. สร้างรายงานขึ้นมา

2. ใส่ Control ไว้ตัวนึง แล้วให้มีค่า = SumResult() และกำหนด Can Grow = Yes

3. ใส่ Function นี้เข้าไปในรายงานตัวนี้ดังนี้

Private Function SumResult() As String
Dim i As Integer, Result As String

Result = ""
For i = 1 To 20
    If Nz([Forms]![Table1](Str(i)), "") <> "" Then
        Result = Result & [Forms]![Table1](Str(i)) & vbNewLine
    End If
Next
SumResult = Result

End Function

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