กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
348 3
URL.หัวข้อ /
URL
เขียน Report โดยอ่านค่าจาก Textbox
จาก กระทู้ที่#2526
ผมได้ทำ Report ในรูปแบบการพิมพ์ตั๋วครับ
อยากทราบว่ามันวน loop พิมพ์ Label ได้หรือไม่ครับ
โดยอ่านจาก Textbox ครับ
เช่นใน Textbox มี A1, A2 ,A3 มันก็จะพิมพ์ 3 รอบครับ
อยากให้เป็นดังรูปครับ (ผมวาดเอง ไม่ได้เขียน code ครับ)
ผมได้ทำ 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
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( ในกระทู้เก่าๆ ดูนะครับ
แต่ก่อนจะนำไปใช้กับ 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 ไม่จบเลย
ขอบพระคุณอาจารย์อย่างสูงครับ
นราวุฒิ
ผมทำได้แล้วครับ โดยใช้ Filter ช่วยด้วย
Me.Filter = no_seat.Caption = "IN (" & no_seat.Caption & ")"
แต่ผมไม่สั่ง FilterOn = Yes นะครับ
เพราะถ้าใส่บรรทัด FilterOn = YES มัน loop ไม่จบเลย
ขอบพระคุณอาจารย์อย่างสูงครับ
นราวุฒิ
Time: 0.1166s
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 แล้วครับ
แต่ติดปัญหาตรงข้างบนครับ
ขอขอบคุณทุกท่านล่วงหน้าครับที่ช่วยเข้ามาอ่าน