กระทู้เก่าบอร์ด อ.Yeadram
1,559 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.2417s
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