1.การคำนวณอายุ ถ้าต้องการให้ตอนกรอกประวัติพนักงาน กรอกวันเกิด/วันเริ่มงานเสร็จแล้ว ให้อายุ/อายุงานมันขึ้นเลยได้หรือป่าวคะ หรือถ้าไม่ได้ เราให้มันคำนวณตอนกดเซฟได้หรือป่าวคะ เพราะเมื่อวานลองลงโค้ดคำนวณดู มันเออเร่ออ่ะค่ะ เหมือนตัวเองจะยังไม่ค่อยเข้าใจหลักการของการวางโค้ดเลยค่ะ
การคำนวนหาช่วงปี เดือน วัน หรือ เวลา เราสามารถใช้ DateDiff ในการหาค่าต่างๆ
เช่น การหาค่าอายุ และ การหาอายุการทำงาน
ผมกำหนด
textbox ที่จะแสดงอายุชื่อ Age
และ textbox ที่จะระบุอายุชื่อ Birthday
โค้ดประมาณนี้ครับ
Me.Age = Int(DateDiff("m", [Birthday], Now()) / 12) & " ปี " & (DateDiff("m", [Birthday], Now()) Mod 12) & "เดือน " & Int(DateDiff("d", [Birthday], Now()) Mod 12) & " วัน "
การหา อายุงานใช้วิธีการเดียวกันครับ
2.คำนวณชั่วโมงการทำงานทั้งหมด อย่างสมมุติ น.ส.สวย เข้างาน= 08.00น. ออกงาน = 17.00น. ชั่วโมงทำงาน = 08.00 ชม. แบบนี้ต้องคำนวณอย่างไร ตั้งชนิดข้อมูลของเข้างาน,ออกงาน เป็น Date/Time นี่คือถูกต้องแล้วใช่มั้ยคะ
ผมสมมุติ textbox 3 อัน ชื่อ Timestart , TimeEnd , CalcTime
โดยจะกำหนดให้คำนวนเวลาทำงาน เมื่อระบุเวลา เริ่มและสินสุดการทำงาน และแสดงใน textbox ชื่อ Calctime
ตัวอย่างโค้ด
Sub CalTime()
If Me.TimeEnd < Me.TimeStart Then
Me.CalcTime = (DateDiff("h", [TimeStart], [TimeEnd]) + 24) & " ชั่วโมง"
Else
Me.CalcTime = DateDiff("h", [TimeStart], [TimeEnd]) & " ชั่วโมง"
End If
End Sub
Private Sub TimeEnd_AfterUpdate()
Call CalTime
End Sub
Private Sub TimeStart_AfterUpdate()
Call CalTime
End Sub
3.คือเรามีตารางเก็บข้อมูลการลางานแบบนี้ 01=มาทำงานปกติ 02=ลาป่วย 03=ลากิจ ... ถ้าต้องการให้มีช่อง2ช่อง ช่อง1 เป็นช่องเล็กๆไว้ใส่เลข 01 แล้วช่องที่2 ให้มันเด้งขึ้นมาเองว่า มาทำงานปกติ ประมาณนี้ ถ้าเราเปลี่ยนแปลงตัวเลข ตัวหนังสือก็เปลี่ยนตามไปด้วย ประมาณนี้อ่ะค่ะ ต้องทำอย่างไรคะ
วิธีการคือให้ไปดูการกำหนด แหล่งข้อมูลแถว ของตัว Combobox นะครับ
สังเกตุดูจะเห็นว่า เราดึง Field ID และ Field Status ลงมาเพื่อใช้เป็น list ของ Combobox
ถ้าเราต้องการให้ กด เลือก ข้อมูลจาก Combobox แล้ว textbox ก็แสดง status ตรงกับ ID นั้น
ก็กำหนดแบบนี้ครับ ที่ Event Afterupdate
Private Sub Combo16_AfterUpdate()
Me.status = Me.Combo16.Column(1)
End Sub
ความหมาย ของ .Column(1) คือการเอา รายการจาก ตัว Combobox คอลัมน์ที่ 2 มาแสดง ใน textbox โดย .Column(0) คือคอลัมน์แรก ส่วน คอลัมน์ ต่อๆไป ก็สามารถระบุ 1 2 3 4 5 ไปเรื่อยๆ ได้ครับ