กระทู้เก่าบอร์ด อ.Yeadram
        
           1,189   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.0611s
    
      
		
ต้องสร้างตารางแยกมาเลย 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
อา.... ยาวจัง อ่านช้า ลองทำตามทีละขั้นครับ