กระทู้เก่าบอร์ด อ.Yeadram
        
           1,499   4		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        โชว์ข้อมูลวันที่ในรีพอร์ต      
    
      เนื่องจากมีการคีย์ข้อมูลเข้าเป็นเวลาทำงานและระบุวันที่ทำงานซึ่งเมื่อเรียกรีพอร์ตจะโชว์เฉพาะข้อมูลและวันที่ที่มีการคีย์ข้อมูลเข้า แต่ความต้องการของผู้ใช้คือให้โชว์วันที่ทุกวันในเดือนนั้นๆด้วย จึงอยากทราบวิธีการว่าจะทำอย่างไรจะให้รีพอร์ตโชว์วันที่ทุกวันแม้จะไม่มีการคีย์ข้อมูลสำหรับวันนั้นๆครับ    
    
  
				4 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    1 @R11590    
        
  
      สร้างอีกเทเบิล สมมุติชื่อ tbDateSeq มีฟิลด์เดียวเป็นฟิลด์วันที่ชื่อ fdDateSeq แล้วป้อนวันที่ที่ต้องการแสดงในรายงานลงไป  สร้างคิวรี่ชื่อ qrOutput ให้เป็นการทำ left join ระหว่าง tbDateSeq กับเทเบิลวันที่ทำงานของพนักงานด้วยฟิลด์ fdDateSeq กับฟิลด์วันที่ทำงานของพนักงาน  แล้วนำเอา qrOutput ไปเป็น RecordSource ให้แก่รายงานก็จะได้ตามต้องการครับ    
    
  
        
    2 @R11591    
        
  
      มีวิธีเขียนฟังชั่นหรือมีฟังชั่นไหนที่เขียนเพื่อให้ตัวโปรแกรมประมวลผลอัตโนมัติโดยมองจากแบบสอบถาม เช่นให้ผู้ใช้เลือกเดือนปีที่จะออกรีพอร์ตหลังจากนั้นให้โปรแกรมมองว่าถ้าเป็นเดือนตุลาคม 2011 ก็ให้รันเลขวันเดือนปีชุดหนึ่งขึ้นมาโดยเรียงตั้งแต่วันที่ 01/10/2011-31/10/2011 ได้หรือไม่ครับ แล้วจับมา leftjoin กับข้อมูลจริงอีกทีครับ    
    
  
        
    3 @R11593    
        
  
      ก็เขียนโค้ดเพื่อลบทุกเรคอร์ดใน tbDateSeq แล้วใส่วันที่ในเดือนที่ต้องการเข้าไปใหม่
Public Sub FillDateSeq(M as integer, Y as integer)
' M = เดือน, Y=ปี 4 หลัก
dim D as Date
Docmd.RunSQL = "delete * from tbDateSeq"
D = DateSerial(Y,M,1)
Loop
DoCmd.RunSQL = "insert into tbDateSeq (fdDateSeq) values (#" & format(D,"dd-mmm-yyyy") & "#)"
DateAdd("d",1,D)
Do Until Month(D) <> M
End Sub
  
สิ่งเดียวที่ยังไม่มั่นใจคือว่า ถ้าระบบ Windows ของคุณเลือกให้แสดงปีเป็น พ.ศ. แล้วปีที่จะส่งเข้าไปใน procedure นี้จะต้องเป็น พ.ศ. ตามด้วยหรือไม่ ถ้าอยากทดลอง ก็ลองปีที่เดือนกุมภาพันธ์มี 29 วันดูครับ
    
  Public Sub FillDateSeq(M as integer, Y as integer)
' M = เดือน, Y=ปี 4 หลัก
dim D as Date
Docmd.RunSQL = "delete * from tbDateSeq"
D = DateSerial(Y,M,1)
Loop
DoCmd.RunSQL = "insert into tbDateSeq (fdDateSeq) values (#" & format(D,"dd-mmm-yyyy") & "#)"
DateAdd("d",1,D)
Do Until Month(D) <> M
End Sub
สิ่งเดียวที่ยังไม่มั่นใจคือว่า ถ้าระบบ Windows ของคุณเลือกให้แสดงปีเป็น พ.ศ. แล้วปีที่จะส่งเข้าไปใน procedure นี้จะต้องเป็น พ.ศ. ตามด้วยหรือไม่ ถ้าอยากทดลอง ก็ลองปีที่เดือนกุมภาพันธ์มี 29 วันดูครับ
        
    4 @R11600    
        
    
      ขอบคุณครับอาจารย์ที่ใช้อยู่เป็นปี ค.ศ. ครับไม่น่าจะมีปัญหา    
    
  
      Time: 0.0638s
    
      
		