เขียน Report โดยอ่านค่าจาก Textbox
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 282   3
URL.หัวข้อ / URL
เขียน Report โดยอ่านค่าจาก Textbox

จาก กระทู้ที่#2526
ผมได้ทำ Report ในรูปแบบการพิมพ์ตั๋วครับ
อยากทราบว่ามันวน loop พิมพ์ Label ได้หรือไม่ครับ
โดยอ่านจาก Textbox ครับ
เช่นใน Textbox มี A1, A2 ,A3 มันก็จะพิมพ์ 3 รอบครับ
อยากให้เป็นดังรูปครับ (ผมวาดเอง ไม่ได้เขียน code ครับ)

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

1 @R05926
ก่อนนี้ผมลองผมเขียน Code นี้ไว้ที่ Event on Actived ครับ

For Each ctl In Form1.Controls
If ctl.ControlType = acToggleButton Then
If Form1(ctl.NAME).Locked = False Then
If Form1(ctl.NAME) = True Then
'เก็บชื่อ control ที่ถูกกด ลงบน TEXTBOX เพราะมันคือ เลขที่นั่ง
no_seat.Caption = no_seat.Caption & Form1(ctl.NAME).NAME & ","
seat = seat + 1
End If
End If
End If
Next ctl
มันจะมีข้อมูลใน Text แล้วครับ

แต่ติดปัญหาตรงข้างบนครับ
ขอขอบคุณทุกท่านล่วงหน้าครับที่ช่วยเข้ามาอ่าน
2 @R05927
ใช้ IN เข้าช่วยครับ

แต่ก่อนจะนำไปใช้กับ Where clause กับเงื่อนไขใน SQL ของ Report ได้ ต้องใส่เครื่องหมาย ' ปิดหน้าหลัง ที่นั่ง ก่อนครับ

จาก A1, A2 , A3
ให้เป็น 'A1','A2','A3'

แล้วใส่ () ครอบลงไปอีกที พร้อมกับใส่ IN ด้วย จะได้

IN ('A1','A2','A3')

เมื่อนำไปใส่ Where clause จะได้

select ... from ชื่อตาราง where ชื่อฟีลด์ที่เก็บเลขที่นั่ง IN ('A1','A2','A3');

ข้างบนจะใช้ได้ก็ต่อเมื่อมีการเก็บเลขที่นั่งไว้ในตารางด้วย

ซึ่งผมว่าควรจะเก็บด้วย เพื่อใช้ประโยชน์ในการคำนวณรายได้ หรือใช้ประโยชน์จากข้อมูลแต่ละวันได้มากขึ้น

ดังนั้นเมื่อทำการ Loop ก็เพิ่ม ' ลงไปด้วย จะได้

...
no_seat.Caption = no_seat.Caption & "'" & Form1(ctl.NAME).NAME & "'", "
...

และต้องตัด , ตัวสุดท้ายออกก่อน

no_seat.Caption = Trim(no_seat.Caption)
no_seat.Caption = Left(no_seat.Caption,Len(no_seat.Caption)-1)
no_seat.Caption = "IN (" & no_seat.Caption & ")"

ถ้าไม่ได้เก็บเลขที่นั่งไว้ในตารางเลย ก็ต้องใช้ Split() ช่วยครับ
ลองค้นด้วยคำว่า Split( ในกระทู้เก่าๆ ดูนะครับ
3 @R05944
กราบขอบพระคุณอาจารย์ที่เสียสละเวลามาช่วยพวกผมนะครับ
ผมทำได้แล้วครับ โดยใช้ Filter ช่วยด้วย
Me.Filter = no_seat.Caption = "IN (" & no_seat.Caption & ")"
แต่ผมไม่สั่ง FilterOn = Yes นะครับ
เพราะถ้าใส่บรรทัด FilterOn = YES มัน loop ไม่จบเลย
ขอบพระคุณอาจารย์อย่างสูงครับ
นราวุฒิ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0927s