อยากให้แสดงตัวเลข เศษที่่เหลือรวมในงวดสุดท้าย และ วันที่ตามกำหนดดิวครับ



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

31 มี.ค. 64 , 13:26:23
อ่าน 593 ครั้ง

assetthai

ผมได้ตัวอย่างในบอร์ดมาครับ จะทำคำนวณเงินต้นและดอกเบี้ย แต่งวดสุดท้ายถ้า Sum รวมกันแล้วมันเกินเงินต้นอยากให้งวดสุดท้าย รวมเศษที่เหลือทั้งหมดรวมกับค่างวดในงวดสุดท้ายนั้นด้วยครับ
ผมมีตาราง Table1 เก็บข้อมูลตาม Code ครับ

มีคำถาม 2 ข้อครับ
1. มีดิวกำหนดชำระทุกวันที่5 ถ้าบวก 30 วันที่จะไม่ตรง แต่อยากให้วันที่เป็นวันที่ 5 (หรือวันที่กำหนด) ทุกเดือน
2. อยากให้เอาเศษที่เหลือรวมงวดสุดท้าย เมื่อเอาเงินต้นมาหารงวด เศษที่เหลือเท่าไหร่เอารวมในงวดสุดท้ายครับ

ขอบคุณครับ

โค๊ด: [Select]
    Dim rs As DAO.Recordset
    Dim i As Integer
    Set rs = CurrentDb.OpenRecordset("Table1", dbOpenDynaset)
    '---------------เพิ่มเรคคอร์ดใหม่--------------
    For i = 1 To 36 ' ใส่จำนวนเรคคอร์ดที่ต้องการ
        rs.AddNew
    'ใส่ชื่อฟิลด์ที่ต้องการ และใส่ค่า โดยกำหนด Data Type ให้ถูกต้อง ถ้าเป็น Text ต้องมี "" คล่อม ถ้าเป็นตัวเลขไม่ต้องมี
        rs!รหัส = "001"
        rs!ชื่อสินค้า = "งวดที่ " & i
        rs!วันครบกำหนด = Date + (30 * i)
        rs!จำนวน = (55000) / 36
        rs!ดอกเบี้ย = (((55000 * 15) / 100) / 12)
        rs.Update
    Next i
    '-----------------------------------------
    rs.Close: Set rs = Nothing

 

31 มี.ค. 64 , 15:26:53
ตอบกลับ #1

PNR

อ้างถึง
1. มีดิวกำหนดชำระทุกวันที่5 ถ้าบวก 30 วันที่จะไม่ตรง แต่อยากให้วันที่เป็นวันที่ 5 (หรือวันที่กำหนด) ทุกเดือน
1.อยากกำหนดวันที่กำหนดชำระเอง เช่นวันที่ 5 น่าจะใช้ datepart มาเช็คได้อยู่ครับ
2.แต่จากโค้ดผมไม่เข้าใจการคำนวนว่าคิดจากอะไร

ผมอาจจะแก้ไขการคำนวนให้ใหม่แต่ต้องอธิบายขั้นตอนการคำนวนให้ละเอียด ว่าต้องการแบบไหน
« แก้ไขครั้งสุดท้าย: 01 เม.ย. 64 , 09:21:46 โดย PNR »
Time to stop for me  :dizzy:
 

31 มี.ค. 64 , 15:35:05
ตอบกลับ #2

assetthai

ข้อที่ 1. ผ่านครับ
ข้อที่ 2. คำนวณจากเงินต้น เช่นเงินต้น 55000 บาท(จำนวน) ตามที่ระบุ ข้อมูลตรงนี้ผมจะเป็นผู้กำหนด โดยอ้างอิงจาก textbox ใน ฟอร์ม เองครับ ใน code ผมยกตัวอย่างที่ 55000 โดยถ้า 36 งวด จะได้งวดละ 1528 และงวดสุดท้าย ตัวเลขต้องเป็น 1520 ถึงจะ sum รวม กันได้ 55000
ซึ่งงวดสุดท้าย จะน้อยกว่าทุก ๆ งวด แล้วแต่ เศษที่เหลือครับ
« แก้ไขครั้งสุดท้าย: 31 มี.ค. 64 , 15:41:32 โดย assetthai »

 

31 มี.ค. 64 , 15:54:47
ตอบกลับ #3

PNR

พรุ่งนี้มาทำให้ครับ พอทำได้ครับ
พอดีเลิกงานแล้ว
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: assetthai

01 เม.ย. 64 , 08:55:48
ตอบกลับ #4

PNR

จากโจทย์ที่บอกมาได้แบบนี้ครับ

แต่ส่วนของดอกเบี้ยไม่ได้เพิ่มให้นะครับ ยังไม่เข้าใจโจทย์

คือไม่ชัวว่าดอกเบี้ยคงที่ทุกงวด (ถ้าใช้ใช้แบบเดิมได้เลย)
ถ้าดอกเบี้ยเปลี่ยนตามยอดเงินต้นที่ลดลง ก็ต้องคำนวนเพิ่มเติมนิดหน่อย


ผมเพิ่มในส่วนการคำนวนเงินต้นคงเหลือให้ด้วยนะครับ
เพราะจากเงื่อนไขของท่านที่ว่างวดสุดท้ายต้องน้อยว่าทุกงวด บางครั้งครบ 36 งวดแล้ว
แต่งวดสุดท้ายยังเหลือเศษอยู่นิดหน่อยด้วย

เช่น ยอด 98,000.00   ส่งงวดละ 2,722.00 งวดสุดท้ายต้องได้ 2,730.00 เพิ่มมา 8 บาทเป็นต้น

โค๊ด: [Select]
Private Sub Command0_Click()

    Dim rs As DAO.Recordset
    Dim i As Integer
    Dim getMonth As String
    Dim getYear As String
    Dim getDate As String
    Dim getTotal As Long
    Dim getPay As Long
    Dim getPayMonth As Long
    Dim getLastpay As Long
    Dim getInterest As Long
    Set rs = CurrentDb.OpenRecordset("Table1", dbOpenDynaset)
    getTotal = 98000
   
    getMonth = DatePart("m", Date)
    getYear = DatePart("yyyy", Date)
    getPay = (getTotal) / 36
    getPayMonth = getTotal
   
    Do Until i > 36
    For i = 1 To 36
       getMonth = getMonth
       If getMonth > 12 Then
       getYear = getYear + 1
       getMonth = "1"
       Else
       getYear = getYear
       End If
       
       If getPayMonth < getPay Then
        getPay = getPayMonth
      Else
        getPay = getPay
      End If
         
    '---------------เพิ่มเรคคอร์ดใหม่--------------
         rs.AddNew
    'ใส่ชื่อฟิลด์ที่ต้องการ และใส่ค่า โดยกำหนด Data Type ให้ถูกต้อง ถ้าเป็น Text ต้องมี "" คล่อม ถ้าเป็นตัวเลขไม่ต้องมี
       rs!รหัส = "001"
       rs!ชื่อสินค้า = "งวดที่ " & i
       rs!วันครบกำหนด = CDate("5/" & getMonth & "/" & getYear)
        If i = 36 Then
        rs!จำนวน = getPayMonth 'ยอดเหลืออีกเท่าไรก็ยกมาได้เลย
        Else
        rs!จำนวน = getPay 
        End If
         '    rs!ดอกเบี้ย = (((55000 * 15) / 100) / 12)
        rs.Update
       
        getMonth = getMonth + 1
        getPayMonth = getPayMonth - getPay
        Next i
        Loop
   
    '-----------------------------------------
    rs.Close: Set rs = Nothing

End Sub
« แก้ไขครั้งสุดท้าย: 01 เม.ย. 64 , 10:45:20 โดย PNR »
Time to stop for me  :dizzy:
 

01 เม.ย. 64 , 10:31:07
ตอบกลับ #5

UnKnown

เจอไฟล์ Excel คำนวนดอกเบี้ยเอามาฝากครับโดยแนวทางการคำนวนเขาคือ ใส่เงินต้น,ดอกเบี้ย/ปี,จำนวนงวด โปรแกรมก็จะคำนวนมาให้ว่าจ่ายงวดล่ะเท่าไหร่โดยเท่ากันทุกงวด(ทศนิยมสองตำแหน่ง) เพื่อเป็นแนวทางครับ

ปล.ไฟล์ Excel เขาทำตารางคำนวนเผื่อไว้เฉยๆนะ
:ninja:     ลองคิด,ลองทำแนวคนไม่เก่งแอคเซส
หมายเหตุ เพื่อความปลอดภัยโปรดสำรองข้อมูลใว้ก่อนการแก้ไข
 
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

01 เม.ย. 64 , 10:36:50
ตอบกลับ #6

PNR

ถ้าเท่ากันทุกงวดงั้นโค๊ดจะเป็นแบบนี้

โค๊ด: [Select]
Private Sub Command0_Click()
Dim rs As DAO.Recordset
    Dim i As Integer
    Dim getMonth As String
    Dim getYear As String
    Dim getDate As String
    Dim getTotal As Long
    Dim getPay As Long
    Dim getPayMonth As Long
    Dim getLastpay As Long
    Dim getInterest As Long
    Set rs = CurrentDb.OpenRecordset("Table1", dbOpenDynaset)
    getTotal = 98000   'ส่วนที่จะสร้าง textbox ระบุยอดเงิน
    getDate = "5"     'ส่วนที่จะสร้าง textbox กำหนดวันที่ชำระ
    getMonth = DatePart("m", Date)
    getYear = DatePart("yyyy", Date)
    getPay = (getTotal) / 36
    getPayMonth = getTotal
    Do Until i > 36
    For i = 1 To 36
       getMonth = getMonth
       If getMonth > 12 Then
       getYear = getYear + 1
       getMonth = "1"
       Else
       getYear = getYear
       End If
           '---------------เพิ่มเรคคอร์ดใหม่--------------
         rs.AddNew
    'ใส่ชื่อฟิลด์ที่ต้องการ และใส่ค่า โดยกำหนด Data Type ให้ถูกต้อง ถ้าเป็น Text ต้องมี "" คล่อม ถ้าเป็นตัวเลขไม่ต้องมี
       rs!รหัส = "001"
       rs!ชื่อสินค้า = "งวดที่ " & i
       rs!วันครบกำหนด = CDate(getDate & "/" & getMonth & "/" & getYear)
        If i = 36 Then
        rs!จำนวน = getPayMonth
        Else
        rs!จำนวน = getPay
        End If
        rs!ดอกเบี้ย = (((getTotal * 15) / 100) / 12)
        rs.Update
        getMonth = getMonth + 1
        getPayMonth = getPayMonth - getPay
        Next i
        Loop
    '-----------------------------------------
    rs.Close: Set rs = Nothing

End Sub

« แก้ไขครั้งสุดท้าย: 01 เม.ย. 64 , 14:56:34 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: assetthai

02 เม.ย. 64 , 15:30:35
ตอบกลับ #7

assetthai

ขอบคุณมากๆครับ ตรงจุดประสงค์ครับ  :love: :love: :love:

 


บอร์ดเรียนรู้ Access สำหรับคนไทย