กระทู้เก่าบอร์ด อ.Yeadram
10,742 10
URL.หัวข้อ /
URL
อยากทราบวิธีคำนวนยูนิดเลขมิเตอร์ไฟฟ้าหน่อยค่ะ
คือหนูกำลังคิดอยากลองทำโปรแกรมฯคำนวนค่าไฟฟ้า แต่ติดตรงวิธีการหาส่วนต่างของจำนวนยูนิตมิเตอร์ไฟฟ้า ที่เป็นตัวเลขสี่หลักว่าจะทำอย่างไร ในกรณ๊ย์ที่เมื่อถึงวันหนึ่งเลขมิเตอร์มันเดินมาถึง 9999 แล้วมันก็จะต้องเริ่มตั้งต้นที่เลข 0000 กันใหม่ เป็นปกติของมันอย่างนี้แหละค่ะ
ตัวเลขช่วงอื่นๆมันก็ไม่ยากหรอก ก็เอาเลขมิเตอร์ของเดือนนี้เป็นตัวตั้ง แล้วก็ลบด้วยเลขมิเตอร์ของเดือนที่แล้ว ก็ได้ส่วนต่างแล้ว แต่มันจะมีปัญหาช่วงจังหวะข้ามรอยต่อ จากเลขมิเตอร์สิ้นสุดที่ 9999 ของรอบเดิม มาเริ่มต้นที่ 0000 ของรอบใหม่นี่แหละค่ะ ว่าจะมีวิธีคิดอย่างไร
ตัวอย่างเช่น
เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้เลขมิเตอร์มันอยู่ที่ 0010
จากกรณีย์ตัวอย่างนี้ หากเราพิจารนาด้วยตนเองก็จะทราบจำนวนส่วนต่างว่า มันคือ 60 ยูนิต
ทีนี้ หากเราจะเขียนโปรแกรมให้มันคำนวนส่วนต่าง จากกรณีย์เลขตัวอย่างข้างต้นนั้น เราจะทำได้หรือเปล่าคะ ที่ว่าจะให้ 0010 ลบด้วย 9950 แล้วให้ผลมันได้ 60 อะค่ะ ต้องใช้สูตรคำนวนพิเศษอย่างไรคะ
พยายามคิดหาวิธีแล้วก็ไม่สำเร็จ
ในที่สุดก็จนด้วยเกล้า จึงต้องเข้ามาขอความช่วยเหลืออาจารย์อีกแล้วค่ะ
ตัวเลขช่วงอื่นๆมันก็ไม่ยากหรอก ก็เอาเลขมิเตอร์ของเดือนนี้เป็นตัวตั้ง แล้วก็ลบด้วยเลขมิเตอร์ของเดือนที่แล้ว ก็ได้ส่วนต่างแล้ว แต่มันจะมีปัญหาช่วงจังหวะข้ามรอยต่อ จากเลขมิเตอร์สิ้นสุดที่ 9999 ของรอบเดิม มาเริ่มต้นที่ 0000 ของรอบใหม่นี่แหละค่ะ ว่าจะมีวิธีคิดอย่างไร
ตัวอย่างเช่น
เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้เลขมิเตอร์มันอยู่ที่ 0010
จากกรณีย์ตัวอย่างนี้ หากเราพิจารนาด้วยตนเองก็จะทราบจำนวนส่วนต่างว่า มันคือ 60 ยูนิต
ทีนี้ หากเราจะเขียนโปรแกรมให้มันคำนวนส่วนต่าง จากกรณีย์เลขตัวอย่างข้างต้นนั้น เราจะทำได้หรือเปล่าคะ ที่ว่าจะให้ 0010 ลบด้วย 9950 แล้วให้ผลมันได้ 60 อะค่ะ ต้องใช้สูตรคำนวนพิเศษอย่างไรคะ
พยายามคิดหาวิธีแล้วก็ไม่สำเร็จ
ในที่สุดก็จนด้วยเกล้า จึงต้องเข้ามาขอความช่วยเหลืออาจารย์อีกแล้วค่ะ
10 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R03766
ขออนุญาตนำแนวคิดไปทดลองทำด้วยคนครับ
ขอบคุณครับ
ขอบคุณครับ
3 @R03767
ว้าว..ได้ผลดีเยี่ยมตามที่ต้องการเลยค่ะอาจารย์
หนูรีบตื่นมาทดสอบตั้งแต่เช้าด้วยความดีใจ ที่สามารถผ่านปัญหานี้ได้แล้วค่ะ
ขอบพระคุณอย่างยิ่งค่ะอาจารย์
หนูรีบตื่นมาทดสอบตั้งแต่เช้าด้วยความดีใจ ที่สามารถผ่านปัญหานี้ได้แล้วค่ะ
ขอบพระคุณอย่างยิ่งค่ะอาจารย์
4 @R03768
อาจารย์สันติสุขครับ
ใช้โจทย์เดิมของเจ้าของกระทู้นะครับ
แต่เพิ่มตรงว่า
เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้ ใช้ไฟเยอะ เลขมิเตอร์มันอยู่ที่ 9957
ไม่แน่ใจว่าต้องเพิ่มคำสั่งอย่างไรครับ
ใช้โจทย์เดิมของเจ้าของกระทู้นะครับ
แต่เพิ่มตรงว่า
เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้ ใช้ไฟเยอะ เลขมิเตอร์มันอยู่ที่ 9957
ไม่แน่ใจว่าต้องเพิ่มคำสั่งอย่างไรครับ
5 @R03769
ขออนุญาติเรียนคุณภาณุวัฒน์ค่ะ
หนูนำสูตรไปใช้ดังนี้
Private Sub Text2_BeforeUpdate(Cancel As Integer)
If Text2 >= Text0 Then
Text4 = Text2 - Text0
Else
Text4 = (10000 - Text0) + Text2
End If
End Sub
ผลออกมาเรียบร้อยดีค่ะรวมทั้งกรณีย์ของท่านที่ว่า
เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้ ใช้ไฟเยอะ เลขมิเตอร์มันอยู่ที่ 9957
หนูทดสอบแล้วก็ใช้ได้นี่คะ
หนูนำสูตรไปใช้ดังนี้
Private Sub Text2_BeforeUpdate(Cancel As Integer)
If Text2 >= Text0 Then
Text4 = Text2 - Text0
Else
Text4 = (10000 - Text0) + Text2
End If
End Sub
ผลออกมาเรียบร้อยดีค่ะรวมทั้งกรณีย์ของท่านที่ว่า
เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้ ใช้ไฟเยอะ เลขมิเตอร์มันอยู่ที่ 9957
หนูทดสอบแล้วก็ใช้ได้นี่คะ
6 @R03770
ขอเรียนถามปัญหาใหม่เพิ่มเติมค่ะอาจารย์
จากการทดสอบดูหลายๆรูปแบบ หนูพบปัญหาอยากขอความช่วยเหลือเพิ่มเติมดังนี้ค่ะ
เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้ผู้ใช้เกิดใส่เลขมิเตอร์ผิด สมมติว่าใส่ย้อนหลังเป็น 9910 ซึ่งผิดปกติ
แต่ผลลัพธ์จากสูตรที่ใช้ดังกล่าว มันยังคงคงคำนวนต่อไปได้ แต่จะออกมาเป็นจำนวนที่ผู้ใช้คงต้องตกใจ เพราะจำนวนมันมากมายตั้ง 9960 ยูนิตอะค่ะ
จากกรณีย์ผู้ใช่ใส่ผิดอย่างนี้ จะมีวิธีดักจับอย่างไร พร้อมทั้งแจ้งเตือนว่ากำลังใส่ผิดและระงับการคำนวนด้วยค่ะ
ขอความกรุณาอีกนิดนะคะอาจารย์
ขอบคุณค่ะ
จากการทดสอบดูหลายๆรูปแบบ หนูพบปัญหาอยากขอความช่วยเหลือเพิ่มเติมดังนี้ค่ะ
เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้ผู้ใช้เกิดใส่เลขมิเตอร์ผิด สมมติว่าใส่ย้อนหลังเป็น 9910 ซึ่งผิดปกติ
แต่ผลลัพธ์จากสูตรที่ใช้ดังกล่าว มันยังคงคงคำนวนต่อไปได้ แต่จะออกมาเป็นจำนวนที่ผู้ใช้คงต้องตกใจ เพราะจำนวนมันมากมายตั้ง 9960 ยูนิตอะค่ะ
จากกรณีย์ผู้ใช่ใส่ผิดอย่างนี้ จะมีวิธีดักจับอย่างไร พร้อมทั้งแจ้งเตือนว่ากำลังใส่ผิดและระงับการคำนวนด้วยค่ะ
ขอความกรุณาอีกนิดนะคะอาจารย์
ขอบคุณค่ะ
7 @R03771
a = n - o
If n < o Then
If o \ 1000 = 9 And n \ 1000 = 0 Then
a = a + 10000
Else
MsgBox "Please recheck your meter"
Exit Sub
End If
End If
คำตอบ= a
// n คือ เลขจดครั้งใหม่
// o คือ เลขจดครั้งก่อน
// a คือ ผลลัพธ์
// ข้อจำกัด ถ้ามิเตอร์ครั้งก่อน อยู่หลัก 9พัน มิเตอร์ตัวนี้ไม่มีสิทธิ์ใช้ไฟฟ้าเกิน 1999 หน่วย ในรอบนี้ เช่น
- จดครั้งก่อน 9001
- รอบปัจจุบันมิเตอร์ตัวนี้ใช้ไฟจัดงานบวช งานแต่ง เดินเครื่องจักร รวมๆ แล้วรอบนี้ใช้ไฟฟ้า ไป 1999หน่วย
- จดครั้งหลัง จึงได้ 1000
- โค้ดนี้จะไม่ทำงาน
If n < o Then
If o \ 1000 = 9 And n \ 1000 = 0 Then
a = a + 10000
Else
MsgBox "Please recheck your meter"
Exit Sub
End If
End If
คำตอบ= a
// n คือ เลขจดครั้งใหม่
// o คือ เลขจดครั้งก่อน
// a คือ ผลลัพธ์
// ข้อจำกัด ถ้ามิเตอร์ครั้งก่อน อยู่หลัก 9พัน มิเตอร์ตัวนี้ไม่มีสิทธิ์ใช้ไฟฟ้าเกิน 1999 หน่วย ในรอบนี้ เช่น
- จดครั้งก่อน 9001
- รอบปัจจุบันมิเตอร์ตัวนี้ใช้ไฟจัดงานบวช งานแต่ง เดินเครื่องจักร รวมๆ แล้วรอบนี้ใช้ไฟฟ้า ไป 1999หน่วย
- จดครั้งหลัง จึงได้ 1000
- โค้ดนี้จะไม่ทำงาน
8 @R03773
ถ้าอย่างนั้น เราต้องกำหนดปริมาณไฟที่ใช้ว่า มันไม่ควรเกินกี่ยูนิต ถ้าเกินก็เตือนขึ้นมา อย่างเช่น 100 ยูนิต ดังนั้นโค้ดก็จะเป็น
Private Sub Text2_BeforeUpdate(Cancel As Integer)
Dim Unit as Integer
If Text2 >= Text0 Then
Unit = Text2 - Text0
Else
Unit = (10000 - Text0) + Text2
End If
If Unit >= 100 then
If Msgbox("ใช้ไฟเกินกว่าคาดการณ์ ใช้ถึง " & Unit & " ยูนิตจริงหรือ ?", vbQuestion + vbYesNo) = vbNo then
Cancel = True
Exit Sub
End If
End If
Text4 = Unit
End Sub
Private Sub Text2_BeforeUpdate(Cancel As Integer)
Dim Unit as Integer
If Text2 >= Text0 Then
Unit = Text2 - Text0
Else
Unit = (10000 - Text0) + Text2
End If
If Unit >= 100 then
If Msgbox("ใช้ไฟเกินกว่าคาดการณ์ ใช้ถึง " & Unit & " ยูนิตจริงหรือ ?", vbQuestion + vbYesNo) = vbNo then
Cancel = True
Exit Sub
End If
End If
Text4 = Unit
End Sub
9 @R03777
ได้ค่ะอาจารย์
ใช้วิธีตรวจจำนวนปริมาณยูนิต ตามที่ท่านแนะนำก็เป็นทางที่ดีเลยค่ะ
ขอขอบคุณอาจารย์ทั้งสองเป็นอย่างยิ่งค่ะ
ใช้วิธีตรวจจำนวนปริมาณยูนิต ตามที่ท่านแนะนำก็เป็นทางที่ดีเลยค่ะ
ขอขอบคุณอาจารย์ทั้งสองเป็นอย่างยิ่งค่ะ
10 @R03802
ขอบคุณเช่นกันครับ
Time: 0.2839s
ผลลัพธ์ = เลขใหม่ - เลขเก่า
else
ผลลัพธ์ = (10000 - เลขเก่า) + เลขใหม่
end if