ตอบ

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.
ชื่อ:
อีเมล์:
หัวข้อ:
ไอค่อนข้อความ:

กันการสแปม
คำนำหน้านามของผู้หญิงไทยที่แต่งงานแล้วคือ


shortcuts: กด alt+s เพื่อตั้งกระทู้ หรือ alt+p แสดงตัวอย่าง


สรุปหัวข้อ

ข้อความโดย: banrong
« เมื่อ: 25/03/17 »

 ขอความกรุณาผู้รู้ช่วยหน่อยครับ
ผมอยากได้โค้ดที่ช่วยแสดงผลอายุออกมาได้
เช่น พิมพ์วันที่วันเกิดเข้าไปก็จะแสดงผลอายุออกมาเลย
ว่า อายุกี่ปี กี่เดือนแล้ว น่ะครับ

ขอบพระคุณล่วงหน้าครับสำหรับคำตอบที่จะมีให้

Int(DateDiff("m",[dep],Now())/12) & " ปี   " & (DateDiff("m",[dep],Now()) Mod 12) & " เดือน"

ลองดูครับ เปลี่ยนชื่อฟิลล์ตรงตัวอักษรสีแดง

เรียน คุณ chya คำตอบของคุณ tes ตรงตามความต้องการคุณแล้วนะครับ นำไปใช้ได้เลยครับ
ส่วน Reply ของผมนี้คือขอร่วมตอบในแนวทางอื่นๆ เพิ่ม เพื่อรวมไว้ในกระทู้เดียวกัน และไว้ให้ท่านอื่นๆ ที่ยังไม่รู้ ได้ค้นหานะครับ


Dim a, b, i As Date
Dim y, m, d As Double

    a = #1/2/2001#                          ' วันที่เริ่มต้น
    b = #9/20/2008#                        ' วันที่สิ้นสุด

-------------------------------------------------------------------------------------------------
วิธีที่ 1   เรียงตามลำดับการคิด, หัดวางโฟลว์ชาร์ต

    y = DateDiff("yyyy", a, b)       ' หาส่วนต่างของปี
    i = DateAdd("yyyy", y, a)       ' วันที่เริ่มต้นที่ใช้คำนวน เมื่อบวกส่วนต่างของปี
    m = DateDiff("m", i, b)             ' จำนวนเดือนที่เหลือ จากเศษของปี
    i = DateAdd("m", m, i)            ' วันที่เริ่มต้นที่ใช้คำนวน เมื่อบวกส่วนต่างของเดือน
    d = DateDiff("d", i, b)               ' จำนวนวันที่เหลือ จากเศษของเดือน
Debug.Print y
Debug.Print m
Debug.Print d

-------------------------------------------------------------------------------------------------
วิธีที่ 2       ย่นรูปคำสั่ง จากวิธีที่ 1 , แยก 3 คำตอบ ปี,เดือน,วัน แต่ละบรรทัดคำสั่งยัง อ้างผลลัพธ์ที่ต่อเนื่อง

    y = DateDiff("yyyy", a, b)                                                                                     ' หาส่วนต่างของปี
    m = DateDiff("m", DateAdd("yyyy", y, a), b)                                                 ' จำนวนเดือนที่เหลือ จากเศษของปี
    d = DateDiff("d", DateAdd("m", m, DateAdd("yyyy", y, a)), b)               ' จำนวนวันที่เหลือ จากเศษของเดือน
Debug.Print y
Debug.Print m
Debug.Print d

-------------------------------------------------------------------------------------------------
วิธีที่ 3    ย่นรูปคำสั่งจากวิธีที่ 2 แยก 3 คำตอบ ปี,เดือน,วัน แต่ละบรรทัดคำสั่ง อิสระจากกัน

    y = DateDiff("yyyy", a, b)
    m = DateDiff("m", DateAdd("yyyy", DateDiff("yyyy", a, b), a), b)
    d = DateDiff("d", DateAdd("m", DateDiff("m", DateAdd("yyyy", DateDiff("yyyy", a, b), a), b), DateAdd("yyyy", DateDiff("yyyy", a, b), a)), b)
Debug.Print y
Debug.Print m
Debug.Print d


-------------------------------------------------------------------------------------------------
วิธีที่ 4 หากเราเลิกคิดถึง ฟังก์ชั่น DateDiff() กับ DateAdd() แล้วลองมองหาฟังกชั่นอื่นๆ ดูบ้าง
    ' กับอีกทางเลือกหนึ่ง 3 คำตอบ แยกอิสระ

    y = Year(b) - Year(a)
    m = Month(b) - Month(a)
    d = Day(b) - Day(a)
Debug.Print y
Debug.Print m
Debug.Print d

   หรือจะนำแบบวิธีที่ 4 ไปใช้ใน sql statement (รวม 3 คำตอบเป็นฟิลด์เดียวกัน ชื่อฟิลด์= diffDate)
   Year (b) - Year(a) & " ปี " & Month(b) - Month(a) & " เดือน " & Day(b) - Day(a) & " วัน" As diffDate




Dim DayRange As Single
Dim MonthRange As Single
Dim YearRange As Single
StartDate = #17/10/2551#
CurrentDate = #20/9/2551#
    YearRange = Year(CurrentDate) - Year(StartDate)
    MonthRange = Month(CurrentDate) - Month(StartDate)
    DayRange = Day(CurrentDate) - Day(StartDate)
    If CurrentDate < StartDate Then
        MsgBox "CurrentDate is less than StartDate", vbOKOnly
        Exit Sub
    End If
     If MonthRange < 0 Then
        YearRange = YearRange - 1
        MonthRange = 12 - Month(StartDate) + Month(CurrentDate)
    End If
    If DayRange < 0 Then
        If MonthRange > 0 Then
            MonthRange = MonthRange - 1
        Else
            YearRange = YearRange - 1
            MonthRange = 11
            End If
        DayRange = 31 - Day(StartDate) + Day(CurrentDate)
        Select Case Month(StartDate)
            Case 4, 6, 9, 11
               DayRange = DayRange - 1
            Case 2
               DayRange = DayRange - 3
            End Select
    End If

    Years = YearRange
    Months = MonthRange
    Days = DayRange