กระทู้เก่าบอร์ด อ.Yeadram
834 4
URL.หัวข้อ /
URL
ช่วยด้วยครับ การแสดงค่าในตัวควบคุม
ผมต้องการให้รายงานแสดงข้อมูลจากตัวควบคุม 1,2,3 ... จนถึง 20
ถ้ามีข้อมูลในตัวควบคุมเฉพาะ 1 หรือ 2 ก็ให้แสดงแค่นั้น ถ้าตัวที่ไม่มี ไม่ให้แสดง
ผมสร้างนิพจน์โดยใช้ =IIf แล้วไม่ได้
ไม่ทราบว่าต้องทำอย่างไรบ้างครับ
รบกวนช่วยด้วยครับ
ถ้ามีข้อมูลในตัวควบคุมเฉพาะ 1 หรือ 2 ก็ให้แสดงแค่นั้น ถ้าตัวที่ไม่มี ไม่ให้แสดง
ผมสร้างนิพจน์โดยใช้ =IIf แล้วไม่ได้
ไม่ทราบว่าต้องทำอย่างไรบ้างครับ
รบกวนช่วยด้วยครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 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 หน้า
แบบนี้ต้องทำอย่างไรคับ ติดมานานมากเลยครับตรงนี้
ขอบพระคุณล่วงหน้าครับผม
=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]), "") <> "" Then
Result = Result & [Forms]) & vbNewLine
End If
Next
SumResult = Result
End Function
เปิดรายงานขึ้นมาเป็นอันเรียบร้อย
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]), "") <> "" Then
Result = Result & [Forms]) & vbNewLine
End If
Next
SumResult = Result
End Function
เปิดรายงานขึ้นมาเป็นอันเรียบร้อย
Time: 0.4537s
เพิ่มเติม : แต่ถ้าเป็นผม เพื่อให้ง่ายต่อการจัดการและดูแลโค้ด ผมจะเขียนโค้ดลง event procedure On Format ของ section ของรายงานที่ค่าเหล่านี้จะไปแสดงแทน
Dim F as Access.Form
Set F = Forms("ชื่อฟอร์ม")
If Nz(F("ชื่อคอนโทรล1บนฟอร์ม"),"") <> "" Then Me("ชื่อคอนโทรล1บนรายงาน") = F("ชื่อคอนโทรล1บนฟอร์ม")
...
...
...