กระทู้เก่าบอร์ด อ.Yeadram
        
           1,716   8		  
          
					  
		    URL.หัวข้อ / 
		    URL
        
        ขอทราบวิธีเปลี่ยนโค้ดเป็นใช้โมดูลแทนค่ะ      
    
      ขอเข้าประเด็นเลยนะคะอาจารย์
หนูมีฟอร์มหนึ่งซึ่งใช้คิวรี่ เป็นแหล่งข้อมูลค่ะ โดยมี Text0 สำหรับใส่ข้อมูล วันชำระเงิน เป็นแบบ Date/time
หนูได้ออกแบบให้ Text0 คอยดักจับเปรียบเทียบกับวันที่ปััจจุบัน โดยหากวันที่ปัจจุบัน มากกว่า Text0 เมื่อใด ก็ให้ใส่ข้อความ "พ้นกำหนดชำระเงิน" ลงไปในText1 (ทั้ง Text0 และText1 อยู่ในคิวรีเดียวกัน)
โดยหนูเขียนโค้ดดักจับไว้สอง Event แบบนี้ค่ะ
Private Sub Form_Current()
If (Text0) <= Date Then
Text1 = "พ้นกำหนดชำระเงิน"
End If
และที่
Private Sub Text0_AfterUpdate()
If (Text0) <= Date Then
Text1 = "พ้นกำหนดชำระเงิน"
     
End If
โค้ดดังกล่าว มันก็ตอบสนองได้อยู่หรอกค่ะ แต่ปัญหาของหนูอยูที่ว่า หากเราไม่เปิดฟอร์มนี้ หรือ ไม่ได้อัพเดต Text0 โค้ดที่ทำไว้มันก็ไม่ทำงาน ที่นี้ เมื่อเราเอาข้อมูลจาก คิวรี่ เดียวกันนี้ ไปพิมพ์รายงาน ข้อมูลรายงานมันไม่อัพเดตค่ะ ก่อนจะพิมพ์รายงานทีไร หนูก็ต้องมาเปิดฟอร์มนี้เพื่อให้ข้อมูลมันอัพเดตเสียก่อน แล้วจึงสั่งพิมรายงาน ซึ่งมันไม่สะดวกเลยค่ะ
ความต้องการของหนูก็คือ หนูอยากให้ข้อมูล ทั้ง Text0 และText1 มันอัพเดตได้เอง โดยไม่ต้องมาเปิดฟอร์มก่อน ไม่ทราบว่าต้องทำอย่างไรคะ
หนูนึกถึง โมดูลคำนวณอายุ ที่ อ. สุภาพ ท่านทำไว้ มันสามารถ คอยคำนวณอายุได้เองโดยอัตโนมัติ หนูก็เลยคิดทึกทักเอาเองว่า...งานนี้สงสัยต้องใช้โมดูลหรือเปล่า หรือ มีวิธีอื่นๆอีกหรือไม่คะ
ขอคำแนะนำด้วยคะอาจารย์
    
    
  หนูมีฟอร์มหนึ่งซึ่งใช้คิวรี่ เป็นแหล่งข้อมูลค่ะ โดยมี Text0 สำหรับใส่ข้อมูล วันชำระเงิน เป็นแบบ Date/time
หนูได้ออกแบบให้ Text0 คอยดักจับเปรียบเทียบกับวันที่ปััจจุบัน โดยหากวันที่ปัจจุบัน มากกว่า Text0 เมื่อใด ก็ให้ใส่ข้อความ "พ้นกำหนดชำระเงิน" ลงไปในText1 (ทั้ง Text0 และText1 อยู่ในคิวรีเดียวกัน)
โดยหนูเขียนโค้ดดักจับไว้สอง Event แบบนี้ค่ะ
Private Sub Form_Current()
If (Text0) <= Date Then
Text1 = "พ้นกำหนดชำระเงิน"
End If
และที่
Private Sub Text0_AfterUpdate()
If (Text0) <= Date Then
Text1 = "พ้นกำหนดชำระเงิน"
End If
โค้ดดังกล่าว มันก็ตอบสนองได้อยู่หรอกค่ะ แต่ปัญหาของหนูอยูที่ว่า หากเราไม่เปิดฟอร์มนี้ หรือ ไม่ได้อัพเดต Text0 โค้ดที่ทำไว้มันก็ไม่ทำงาน ที่นี้ เมื่อเราเอาข้อมูลจาก คิวรี่ เดียวกันนี้ ไปพิมพ์รายงาน ข้อมูลรายงานมันไม่อัพเดตค่ะ ก่อนจะพิมพ์รายงานทีไร หนูก็ต้องมาเปิดฟอร์มนี้เพื่อให้ข้อมูลมันอัพเดตเสียก่อน แล้วจึงสั่งพิมรายงาน ซึ่งมันไม่สะดวกเลยค่ะ
ความต้องการของหนูก็คือ หนูอยากให้ข้อมูล ทั้ง Text0 และText1 มันอัพเดตได้เอง โดยไม่ต้องมาเปิดฟอร์มก่อน ไม่ทราบว่าต้องทำอย่างไรคะ
หนูนึกถึง โมดูลคำนวณอายุ ที่ อ. สุภาพ ท่านทำไว้ มันสามารถ คอยคำนวณอายุได้เองโดยอัตโนมัติ หนูก็เลยคิดทึกทักเอาเองว่า...งานนี้สงสัยต้องใช้โมดูลหรือเปล่า หรือ มีวิธีอื่นๆอีกหรือไม่คะ
ขอคำแนะนำด้วยคะอาจารย์
				8 Reply in this Topic. Dispaly 1  pages and you are on page number 1 
				
        
    2 @R06104    
        
  
      หรืออีกวิธี ที่รายงานสร้าง textbox 1 อัน ตรงตำแหน่งที่ต้องการแสดงข้อความ
ที่แหล่งตัวควบคุม Control Source เขียน
=iif(ใช้ชื่อ textbox ที่เก็บวันชำระเงิน) <= Date,"พ้นกำหนดชำระเงิน","ยังไม่ถึงกำหนดชำระเงิน")
    
  ที่แหล่งตัวควบคุม Control Source เขียน
=iif(ใช้ชื่อ textbox ที่เก็บวันชำระเงิน) <= Date,"พ้นกำหนดชำระเงิน","ยังไม่ถึงกำหนดชำระเงิน")
        
    3 @R06108    
        
  
      ถ้า Post ไม่ได้ ผมแนะนำ Captrue  หน้าจอแล้วเอามาแนบเป็นรูปเลยครับ    
    
  
        
    4 @R06109    
        
  
      อืม...คือหนูอยากให้มันอัพเดตที่คิวรี่เลย ไม่ทราบว่าสามารถทำได้หรือไม่คะ เหตุผลก็เพราะว่า หนูต้องการใช้ข้อมูลจากคิวรี่นี้ ขยายผลไปใช้ยังส่วนอื่นๆต่อด้วย เช่นอาจนำไปพรีวิวดูว่า มีใครค้างชำระเงินอยู่บ้าง ฯลฯ เป็นแนวคิดที่ตั้งใจไว้ค่ะ ไม่ทราบว่าทางปฏิบัติสามารถทำได้หรือไม่คะ
ขอบคุณค่ะ
    
  ขอบคุณค่ะ
        
    5 @R06111    
        
  
      สร้างคอลัมภ์ในคิวรี่ ชื่อ result (ชื่ออื่นก็ได้นะครับ)
result:iif([วันที่ลงทะเบียน] < Date(),"พ้นกำหนดชำระเงิน", "ยังไม่ครบ")
    
  result:iif([วันที่ลงทะเบียน] < Date(),"พ้นกำหนดชำระเงิน", "ยังไม่ครบ")
        
    6 @R06112    
        
  
      (ทั้ง Text0 และText1 อยู่ในคิวรีเดียวกัน) 
ผมไม่เข้าใจตรงนี้ครับ
text0 กับ text1 ดูจากชื่อน่าจะเป็นคอนโทรล ซึ่งมันน่าจะอยู่บนฟอร์ม ไม่ใช่คิวรี่ แต่ในเมื่อคุณมาลี ว่ามันอยู่ในคิวรี่ ก็น่าจะเป็นชื่อฟิลด์
ขอทราบชื่อฟิลด์ของตารางต้นทางได้ไหมครับ เอาแค่ตัว index + วันที่ + ฟิลด์ที่ต้องการอัพเดต ก็ได้ หรือ..
ขอดู SQL ของคิวรี่ตัวดังกล่าวได้ไหมครับ
    
  ผมไม่เข้าใจตรงนี้ครับ
text0 กับ text1 ดูจากชื่อน่าจะเป็นคอนโทรล ซึ่งมันน่าจะอยู่บนฟอร์ม ไม่ใช่คิวรี่ แต่ในเมื่อคุณมาลี ว่ามันอยู่ในคิวรี่ ก็น่าจะเป็นชื่อฟิลด์
ขอทราบชื่อฟิลด์ของตารางต้นทางได้ไหมครับ เอาแค่ตัว index + วันที่ + ฟิลด์ที่ต้องการอัพเดต ก็ได้ หรือ..
ขอดู SQL ของคิวรี่ตัวดังกล่าวได้ไหมครับ
        
    7 @R06116    
        
  
      เรียบ อ.yeadram Post ข้อความยาวๆขึ้นเว็ปไม่ได้ค่ะ
Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'Mid'
/functions/functions_filters.asp, line 37
    
  Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'Mid'
/functions/functions_filters.asp, line 37
        
    8 @R06118    
        
       
    
    
  
     
    
      Time: 0.8887s
    
      
		
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If (ใช้ชื่อ textbox ที่เก็บวันชำระเงิน) <= Date Then
'สร้าง Label ที่ต้องการแสดงข้อความ สมมติชื่อ lblPayment
lblPayment.Caption = "พ้นกำหนดชำระเงิน"
Else
lblPayment.Caption = "ยังไม่ถึงกำหนดชำระเงิน"
End If
End Sub