ขอทราบวิธีเปลี่ยนโค้ดเป็นใช้โมดูลแทนค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 1,563   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 มันอัพเดตได้เอง โดยไม่ต้องมาเปิดฟอร์มก่อน ไม่ทราบว่าต้องทำอย่างไรคะ
หนูนึกถึง โมดูลคำนวณอายุ ที่ อ. สุภาพ ท่านทำไว้ มันสามารถ คอยคำนวณอายุได้เองโดยอัตโนมัติ หนูก็เลยคิดทึกทักเอาเองว่า...งานนี้สงสัยต้องใช้โมดูลหรือเปล่า หรือ มีวิธีอื่นๆอีกหรือไม่คะ

ขอคำแนะนำด้วยคะอาจารย์

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

1 @R06103
ถ้าคุณมาลีเขียน code ที่ Form_current() ได้ ที่รายงานลองใช้วิธีเดียวกันดูครับ   เขียนที่
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

2 @R06104
หรืออีกวิธี ที่รายงานสร้าง textbox 1 อัน ตรงตำแหน่งที่ต้องการแสดงข้อความ
ที่แหล่งตัวควบคุม Control Source เขียน
=iif(ใช้ชื่อ textbox ที่เก็บวันชำระเงิน) <= Date,"พ้นกำหนดชำระเงิน","ยังไม่ถึงกำหนดชำระเงิน")
3 @R06108
ถ้า Post ไม่ได้ ผมแนะนำ Captrue หน้าจอแล้วเอามาแนบเป็นรูปเลยครับ
4 @R06109
อืม...คือหนูอยากให้มันอัพเดตที่คิวรี่เลย ไม่ทราบว่าสามารถทำได้หรือไม่คะ เหตุผลก็เพราะว่า หนูต้องการใช้ข้อมูลจากคิวรี่นี้ ขยายผลไปใช้ยังส่วนอื่นๆต่อด้วย เช่นอาจนำไปพรีวิวดูว่า มีใครค้างชำระเงินอยู่บ้าง ฯลฯ เป็นแนวคิดที่ตั้งใจไว้ค่ะ ไม่ทราบว่าทางปฏิบัติสามารถทำได้หรือไม่คะ

ขอบคุณค่ะ
5 @R06111
สร้างคอลัมภ์ในคิวรี่ ชื่อ result (ชื่ออื่นก็ได้นะครับ)
result:iif([วันที่ลงทะเบียน] < Date(),"พ้นกำหนดชำระเงิน", "ยังไม่ครบ")
6 @R06112
(ทั้ง Text0 และText1 อยู่ในคิวรีเดียวกัน)
ผมไม่เข้าใจตรงนี้ครับ

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
8 @R06118
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3225s