กระทู้เก่าบอร์ด อ.Yeadram
1,012 8
URL.หัวข้อ /
URL
แสดงครั้งที่พิมพ์ใน report
รบกวนสอบถามอาจารย์ค่ะ ในการสร้าง Report แล้วใน Report ต้องการให้ แสดงจำนวนครั้งที่ พิมพ์ report นั้นๆ ในแต่ละเดือน
เช่น รายการการใช้เครื่อง เดือนที่ 1 พิมพ์ ครั้งที่ 1
-------------"------- เดือนที่ 1 พิมพ์ครั้งที่ 2 .
แล้วพอเริ่มเดือน ใหม่ เดือนที่ 2 พิมพ์ครั้งที่ 1
โดยให้ข้อมูลนี้ไปแสดงในหน้า Report ทุกครั้งที่ สั่งพิมพ์ รายงาน พอจะมีวิธีแนะนำมัั้ยค่ะ
ขอบคุณค่ะ
เช่น รายการการใช้เครื่อง เดือนที่ 1 พิมพ์ ครั้งที่ 1
-------------"------- เดือนที่ 1 พิมพ์ครั้งที่ 2 .
แล้วพอเริ่มเดือน ใหม่ เดือนที่ 2 พิมพ์ครั้งที่ 1
โดยให้ข้อมูลนี้ไปแสดงในหน้า Report ทุกครั้งที่ สั่งพิมพ์ รายงาน พอจะมีวิธีแนะนำมัั้ยค่ะ
ขอบคุณค่ะ
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R23426
โค้ดติดตรงนี้อ่ะค่ะ ไม่แน่ใจว่าพิมพ์ถูกมั้ยยย
โค้ดติดตรงนี้อ่ะค่ะ ไม่แน่ใจว่าพิมพ์ถูกมั้ยยย
3 @R23427
...
4 @R23428
โค้ดติดตรงนี้อ่ะค่ะ ไม่แน่ใจว่าพิมพ์ถูกมั้ยยย ที่ขีดเส้นใต้
DoCmd.RunSQL "Insert Into tbReportHistory Value ('rpt_plan',Now(),©Ñ¹àͧ);"
Dim prnCnt As Long
prnCnt = Nz(DCount(" rptName ", " tbReportHistory ", " rptName= " & ' rpt_plan ' & ", Month('PrintDate') = " & Month(Now()) & " , Year('PrintDate') = " & Year(Now())))
DoCmd.OpenReport "rpt_plan", acViewNormal, , , , prnCnt
DoCmd.RunSQL "Insert Into tbReportHistory Value ('rpt_plan',Now(),©Ñ¹àͧ);"
Dim prnCnt As Long
prnCnt = Nz(DCount(" rptName ", " tbReportHistory ", " rptName= " & ' rpt_plan ' & ", Month('PrintDate') = " & Month(Now()) & " , Year('PrintDate') = " & Year(Now())))
DoCmd.OpenReport "rpt_plan", acViewNormal, , , , prnCnt
5 @R23433
ลองดูที่ VDO นี่ดูครับ
6 @R23441
ทำได้แล้วค่ะขอบคุณมากๆเลยนะค่ะ คุณ TTT
7 @R23449
อาจารย์ TTT สุดยอดมากครับ
สละเวลา ทำเป็นคลิ๊ป ดูตามแล้วเข้าใจง่ายดีแท้ๆ เลย
ขอขอบคุณแทนมือใหม่ ทุกๆ ท่านเลยครับ
อาจารย์ TTT สุดยอดมากครับ
สละเวลา ทำเป็นคลิ๊ป ดูตามแล้วเข้าใจง่ายดีแท้ๆ เลย
ขอขอบคุณแทนมือใหม่ ทุกๆ ท่านเลยครับ
8 @R23450
ยอดเยี่ยมมากครับ ผมนับถือท่านเป็นอาจารย์เลยครับ ดูจากหลายๆวีดีโอที่ท่านตอบ มีความรู้สึกว่าอุ่นใจที่มีท่านคอยให้คำตอบ รู้สึกว่าไม่มีอะไรที่ท่านทำไม่ได้เลยครับ ผมนั่งดูหลายๆวีดีโอที่ท่านทำ ดูแล้วเพลินมาก ชวนให้ศึกษาเพิ่มเติมแบบไม่รู้จักจบเลยครับ
Time: 0.3333s
ต้องสร้างตารางแยกมาเลย 1 ตาราง
เช่น
tbReportHistory
มีอย่างน้อย 3 ฟิลด์ เช่น rptName | PrintDate | PrintUser เป็นต้น
ทุกครั้งที่ user จะสั่งพิมพ์ ให้สั่งผ่านปุ่มคำสั่ง
ในปุ่มคำสั่ง เราก็แฝงโค้ดไว้ เพื่อให้ทำงานดังนี้
- ป้อนข้อมูลเข้าตาราง tbReportHistory ด้วยข้อมูล "ชื่อรายงาน" | "วันที่ปัจจุบัน" | "ชื่อผู้สั่งพิมพ์" เป็นต้น
- สั่งนับจำนวนเรคคอร์ด ในตาราง โดยมีเงื่อนไขการนับว่า ต้องเป็นเรคคอร์ดที่มีชื่อรายงานเป็นชื่อนี้ + ต้องมีวันที่เป็นของเดือนนี้
- เอาจำนวนที่นับได้ ทำเป็นค่า ส่งเข้าไปใน อาร์กิวเมนต์เรียกรายงาน
- สั่งปริ๊นท์รายงาน
ที่การออกแบบรายงาน ก็ให้ฝังโค้ดไว้ที่ event ของการเปิดรายงาน Report_open
- ให้ทำการตรวจเช็คอาร์กิวเมนต์นี้
- - ถ้ามีข้อมูล ให้เอาข้อมูลไปใส่ ใน textbox ที่่เราสร้างรอไว้ ที่ header หรือ footer ของรายงาน ครับ
่เช่น วางคอนโทรลชนิด label ไว้ที่ header ของรายงาน เขียนว่า "พิมพ์ครั้งที่ "
แล้ว วางคอนโทรลชนิด textbox ไว้ต่อกันไปทางขวา ตั้งชื่อ textbox ว่า "txPrintCount"
ทีนี้มาดูโค้ดกันครับ
โค้ดแรกคือ ปุ่มคำสั่งการเรียกรายงาน
Private Sub commandPrint_Click()
docmd.runSQL "Insert into tbPrintHistory value('ชื่อรายงาน', Now(), 'ฉันเอง');"
dim prnCnt as long
prnCnt = nz(dcount("rpName", "tbPrintHistory", "rpName = " & 'ชื่อรายงาน' & ", Month('PrintDate') = " & Month(now()) & ", Year('PrintDate') = " & Year(now()))
docmd.OpenReport "ชื่อรายงาน",acViewNormal,,,,prnCnt
End sub
โค้ดต่อไป ฝังไว้ที่ รายงาน
Private Sub Report_Open(Cancel As Integer)
On Error Resume Next
txPrintCount = Me.OpenArgs
End Sub
อา.... ยาวจัง อ่านช้า ลองทำตามทีละขั้นครับ