แสดงครั้งที่พิมพ์ใน report
กระทู้เก่าบอร์ด อ.Yeadram

 928   8
URL.หัวข้อ / URL
แสดงครั้งที่พิมพ์ใน report

รบกวนสอบถามอาจารย์ค่ะ ในการสร้าง Report แล้วใน Report ต้องการให้ แสดงจำนวนครั้งที่ พิมพ์ report นั้นๆ ในแต่ละเดือน

เช่น รายการการใช้เครื่อง เดือนที่ 1 พิมพ์ ครั้งที่ 1
-------------"-------          เดือนที่ 1 พิมพ์ครั้งที่ 2 .

แล้วพอเริ่มเดือน ใหม่ เดือนที่ 2 พิมพ์ครั้งที่ 1

โดยให้ข้อมูลนี้ไปแสดงในหน้า Report ทุกครั้งที่ สั่งพิมพ์ รายงาน พอจะมีวิธีแนะนำมัั้ยค่ะ

ขอบคุณค่ะ

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

1 @R23423
ต้องสร้างเป็นตาราง คุมเอกสารครับ
ต้องสร้างตารางแยกมาเลย 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

อา.... ยาวจัง อ่านช้า ลองทำตามทีละขั้นครับ

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

5 @R23433
ลองดูที่ VDO นี่ดูครับ
6 @R23441
ทำได้แล้วค่ะขอบคุณมากๆเลยนะค่ะ คุณ TTT
7 @R23449

อาจารย์ TTT สุดยอดมากครับ
สละเวลา ทำเป็นคลิ๊ป ดูตามแล้วเข้าใจง่ายดีแท้ๆ เลย

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