อยากทราบการตัดเกรดค่ะ vb ช่วยหน่อยนะคะ ต้องการความช่วยเหลือมากเลยค่ะ!!
ปกติถ้าอ่านจาก Excel แล้วมาเก็บไว้ใน Datatable ก็อาจจะใช้การ Loop ค่า DataTable เพื่อตรวจสอบค่าใหม่ครับ จากนั้นค่อยนำไป Bind ใน DataGridView ใหม่ครับ
Date :
2013-09-24 09:13:00
By :
mr.win
Code (VB.NET)
'Master Data
Dim dtScore As New DataTable("GradeTable")
dtScore.Columns.Add("FromScore", GetType(Decimal))
dtScore.Columns.Add("ToScore", GetType(Decimal))
dtScore.Columns.Add("Grade", GetType(String))
dtScore.Rows.Add(New Object() {-0.0, 49.99, "F"})
dtScore.Rows.Add(New Object() {50.0, 59.99, "D"})
dtScore.Rows.Add(New Object() {60.0, 69.99, "C"})
dtScore.Rows.Add(New Object() {70.0, 79.99, "B"})
dtScore.Rows.Add(New Object() {80.0, 100.0, "A"})
'Transaction Data
Dim dtStudent As New DataTable("Student")
dtStudent.Columns.Add("stdID", GetType(Integer))
dtStudent.Columns.Add("Total", GetType(Decimal)) ' สอบระหว่างภาค + คะแนนจิตสวาท + etc
dtStudent.Rows.Add(New Object() {3, 95})
dtStudent.Rows.Add(New Object() {1, 50})
dtStudent.Rows.Add(New Object() {2, 66})
dtStudent.Rows.Add(New Object() {4, 75})
dtStudent.Rows.Add(New Object() {5, 49})
Dim g = From x In dtStudent
From y In dtScore
Where x.Item("Total") >= y.Item("FromScore") AndAlso x.Item("Total") <= y.Item("ToScore")
Select StudentID = x.Field(Of Integer)("stdID"), Grade = y.Field(Of String)("Grade")
DataGridView1.DataSource = g.ToList()
Date :
2013-09-24 16:27:07
By :
ผ่านมา
จาก #NO 2 ผมมั่นใจทุกวิธีที่กล่าวมาใช้ LINQ Query บรรทัดเดียว ตอบโจทย์ของหนูได้ทั้งหมด
โดยผมยกตัวอย่างจริงของการคำนวณ ภาษีเงินได้บุคคลธรรมดา ที่จะเริ่มใช้ในปี พ.ศ. 2557
Date :
2013-09-24 16:35:14
By :
ผ่านมา
Code (VB.NET)
'ตารางอัตราภาษีก้าวหน้า 7 ขั้น เริ่มใช้ปี พ.ศ. 2557
Dim dtTaxTable7 As New DataTable("dtTaxTable7")
dtTaxTable7.Columns.Add("IncomeBase", GetType(Decimal))
dtTaxTable7.Columns.Add("IncomeTop", GetType(Decimal))
dtTaxTable7.Columns.Add("TaxRate", GetType(Decimal))
dtTaxTable7.Columns.Add("PrevTop", GetType(Decimal))
dtTaxTable7.Columns.Add("CumulTax", GetType(Decimal))
dtTaxTable7.Rows.Add(New Object() {0.0, 150000, 0, 0, 0})
dtTaxTable7.Rows.Add(New Object() {150000.01, 300000, 0.05, 150000, 0})
dtTaxTable7.Rows.Add(New Object() {300000.01, 500000, 0.1, 300000, 7500})
dtTaxTable7.Rows.Add(New Object() {500000.01, 750000, 0.15, 500000, 27500})
dtTaxTable7.Rows.Add(New Object() {750000.01, 1000000, 0.2, 750000, 65000})
dtTaxTable7.Rows.Add(New Object() {1000000.01, 2000000, 0.25, 1000000, 115000})
dtTaxTable7.Rows.Add(New Object() {2000000.01, 4000000, 0.3, 2000000, 365000})
dtTaxTable7.Rows.Add(New Object() {4000000.01, 1000000000, 0.35, 4000000, 965000})
'ตาราง รายได้สุทธิของพนักงาน พอสังเขป
Dim dtSalary As New DataTable("dtSalary")
dtSalary.Columns.Add("EmpID", GetType(Integer))
dtSalary.Columns.Add("TotalYearlyIncome", GetType(Decimal))
dtSalary.Rows.Add(New Object() {1, 0.99})
dtSalary.Rows.Add(New Object() {2, 149999})
dtSalary.Rows.Add(New Object() {3, 300000})
dtSalary.Rows.Add(New Object() {4, 300000000})
dtSalary.Rows.Add(New Object() {5, 600000000})
Dim t = From x In dtSalary
From y In dtTaxTable7
Let Tax = ((x.Item("TotalYearlyIncome") - y.Item("PrevTop")) * y.Item("TaxRate")) + y.Item("CumulTax")
Where x.Item("TotalYearlyIncome") >= y.Item("IncomeBase") AndAlso x.Item("TotalYearlyIncome") <= y.Item("IncomeTop")
Select Tax
สรุปภายใต้โครงสร้างอัตราภาษีใหม่
พนักงาน รายได้ 300,000 ต้องเสียภาษี = 7,500 บาท
พนักงาน รายได้ 3,000,000 ต้องเสียภาษี = 665,000 บาท
พนักงาน รายได้ 300,000,000 ต้องเสียภาษี = 104,565,000 บาท
พนักงาน รายได้ 600,000,000 ต้องเสียภาษี = 209,565,000 บาท
สรุปภายใต้โครงสร้างอัตราภาษีเดิม
พนักงาน รายได้ 300,000 ต้องเสียภาษี = 15,000 บาท
พนักงาน รายได้ 3,000,000 ต้องเสียภาษี = 735,000 บาท
พนักงาน รายได้ 300,000,000 ต้องเสียภาษี = 110,555,000 บาท
พนักงาน รายได้ 600,000,000 ต้องเสียภาษี = 221,555,000 บาท
ข้อสังเกตุ : Source Code Let Tax = ???
[x] เพิ่มเติมต่อ ...
Date :
2013-09-24 16:49:30
By :
ผ่านมา
จาก จาก #NO 2 - #NO5 ผมใช้ DataTable เก็บข้อมูลตัวอย่าง เพื่อช่วยในการคำนวณ
ซึ่งในการใช้งานจริง (ประยุกต์) เจ้าของกระทู้อาจจะใช้ Array() หรือว่า Generic หรือว่าอื่นฯ
ขึ้นอยู่กับสถานะการณ์ หรือตามความเหมาะสม ก็ย่อมได้เช่นเดียวกัน
กรณีการคำนวณเกรดแบบอิงกลุ่ม หลักการก็ไม่แตกต่างกันครับ และ
เื่พื่อให้ท่านเติบโตด้วยตัวเอง ผมคงละเอาไว้
GoodLuck
[x] ผมว่าออกแบบหน้าจอของท่าน และ ขั้นตอนการทำงาน
ยังต้องปรับปรุงอีกเยอะเลยนะครับ ไม่ถึงกับยอดแย่ แต่ก็อยู่ในช่วง 0 - 49.99 ครับ
Date :
2013-09-25 08:05:42
By :
ผ่านมา
ผมลืมบอกไปว่า ผมลืมทฤษฏีเหล่านี้ไปหมดแล้ว ทั้งฯที่ผมจบสาขาวิชา สถิติศาสตร์ โดยตรง
แต่ผมมั่นใจว่า
ถ้าผมมีเวลาอันน้อยนิดพอที่จะทบทวน ทฤษฏีขั้นสูง เหล่านี้อีกครั้ง มันก็ไม่ใช่เรื่องยากจนเกินไปนัก
ถึงแม้ว่าผมจะทำได้ไม่ดีเท่าคนอื่นเขา แต่ผมมองเห็นบุคคลเหล่านั้นอยู่ข้างหน้าผมนี่เอง "ไม่กี่ช่วงก้าวเดิน "
+55555
[x] กฏของเหลียงซาน เขาขึ้น หรือว่า ขึ้นเขา มันก็ไม่แตกต่างกัน เอวัง...
Date :
2013-09-25 08:38:29
By :
ผ่านมา
Load balance : Server 04