ProjectForStudy

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 60|ตอบกลับ: 2

[ถาม/ตอบ] รบกวนถามเรื่อง AddDays หน่อยครับ

[คัดลอกลิงก์]
  • อารมณ์วันนี้
    สู้
    8 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 199 วัน

    [LV.7]JuniorIII

    14

    กระทู้

    366

    โพสต์

    837

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    837
    Ticket
    289
    จิตพิสัย
    548
    พอดีจะ Adddays นะครับอันนี้เป็นตัวอย่าง Add 3 วัน มันจะได้วันที่ 28/05/2562 แต่พอดีอยาก Add 3 วันไม่นับรวม เสาร์ กับ อาทิตย์นะครับ มันก็จะได้ 30/05/2562
    ประมาณนี้นะครับ

    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    แฮปปี้
    8 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 278 วัน

    [LV.8]ConquerorI

    25

    กระทู้

    597

    โพสต์

    2055

    เครดิต

    HawkBrain

    Rank: 4

    เครดิต
    2055
    Ticket
    1238
    จิตพิสัย
    817

    Merciful MemberInstructor

    puklit โพสต์ 2019-5-27 12:38:50 | ดูโพสต์ทั้งหมด
    แก้ไขครั้งสุดท้ายโดย puklit เมื่อ 2019-5-27 13:08

    ท่านต้องศึกษาเรื่อง DayofWeek ก่อนจึงจะเข้าใจและสามารถไปต่อยอดได้ค่าของ DayofWeek จะคืนค่าเป็น Monday - Sunday

    ตัวอย่างฟอร์ม
    หลังจาก AddDay แล้ว ให้นำผลลัทธ์มาตรวจสอบ DayofWeek ดังนี้

    DayofWeek = Saturday ให้บวก 2 วัน




    DayofWeek = Monday - Friday ให้บวกวันตามปกติ


    ตัวอย่างโค้ด

    1. Public Class Form1

    2.     Private Sub btExcute_Click(sender As Object, e As EventArgs) Handles btExcute.Click

    3.         txtResult.Text = Add_Days(CalendarControl1.SelectionStart, Convert.ToInt32(txtAddDays.Text)).ToString("dd/MM/yyyy")

    4.     End Sub

    5.     Private Function Add_Days(StartDate As DateTime, Totals_Days As Integer) As DateTime

    6.         Dim _Day = StartDate.AddDays(Totals_Days) 'เพิ่มวันตาม Function เก็บไว้ใน _Day
    7.         Dim Result As DateTime ' หลังจากประมาลผลแล้วคืนค่า Function ด้วย Result

    8.         If _Day.DayOfWeek = DayOfWeek.Saturday Then ' ถ้าเป็นวันเสาร์

    9.             Result = _Day.AddDays(2) ' ให้เพิ่มวันไปอีก 2 วัน

    10.         ElseIf _Day.DayOfWeek = DayOfWeek.Sunday Then ' ถ้าเป็นวันอาทิตย์

    11.             Result = _Day.AddDays(1) ' ให้เพิ่มวันไปอีก 1 วัน

    12.         Else ' ถ้าเป็นวันจันทร์ - ศุกร์

    13.             Result = _Day ' เพิ่มวันตามปกติ

    14.         End If

    15.         Return Result ' คืนค่า Function

    16.     End Function

    17.     Private Sub CalendarControl1_Click(sender As Object, e As EventArgs) Handles CalendarControl1.Click

    18.         txtSelected_Date.Text = CalendarControl1.SelectionStart.ToString("dd/MM/yyyy")

    19.     End Sub

    20. End Class
    คัดลอกไปที่คลิปบอร์ด

    จากโค้ดตัวอย่างผมทำให้ดูเพียง 1 Week นะครับ ถ้าต้องคิดข้ามหลาย ๆ  Week ต้องนับ วันเสาร์และอาทิตย์ด้วย แล้วค่อยมาบวกเพิ่ม

    หากต้องการต่อยอดคิด วันหยุดนักขัตฤกษ์ หรือวันหยุดประจำปี ก็ต้องมีฐานข้อมูลเก็บวันหยุดด้วย
    1. หาวันหยุดระหว่างวัน เริ่มต้นถึงวัน AddDay = มีจำนวนกี่วัน
    2. ถ้าจะหักวันเสาร์และอาทิตย์ ก็ทำเหมือนกับข้อ 1
    3. สุดท้าย คิดจาก AddDay ปกติ + ข้อ 1 + ข้อ 2 จะได้วันที่ต้องการ

    หรืออีกวิธีเขียนเป็น Function นี้ใว้ที่ฐานข้อมูล (Sql server) เวลาเรียกใช้ก็ Select + Function ที่เขียนไว้มาแสดงได้เลย
    ผมใช้ทั้ง 2 วิธี ขึ้นอยู่กับสถานะการณ์การเรียกใช้งานหรือประมวลผล

    ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

    คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

    x
  • อารมณ์วันนี้
    สู้
    8 ชั่วโมงที่แล้ว
  • เช็คชื่อแล้ว: 199 วัน

    [LV.7]JuniorIII

    14

    กระทู้

    366

    โพสต์

    837

    เครดิต

    TeenLion

    Rank: 3Rank: 3

    เครดิต
    837
    Ticket
    289
    จิตพิสัย
    548
     เจ้าของ| anuyutza1995 โพสต์ 2019-5-27 14:33:32 | ดูโพสต์ทั้งหมด
    puklit ตอบกลับเมื่อ 2019-5-27 12:38
    ท่านต้องศึกษาเรื่อง DayofWeek ก่อนจึงจะเข้าใจและสามารถไ ...

    ขอบคุณครับ คุณ (Message.show("Vb.net"))
    ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

    รายละเอียดเครดิต

    ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|ProjectForStudy  

    GMT+7, 2019-6-25 17:01 , Processed in 0.058385 second(s), 28 queries .

    Powered by Discuz! X3.2 R20150609, Rev.38

    © 2001-2013 Comsenz Inc.

    ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้