อยากทราบวิธีคำนวนยูนิดเลขมิเตอร์ไฟฟ้าหน่อยค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 10,742   10
URL.หัวข้อ / URL
อยากทราบวิธีคำนวนยูนิดเลขมิเตอร์ไฟฟ้าหน่อยค่ะ

คือหนูกำลังคิดอยากลองทำโปรแกรมฯคำนวนค่าไฟฟ้า แต่ติดตรงวิธีการหาส่วนต่างของจำนวนยูนิตมิเตอร์ไฟฟ้า ที่เป็นตัวเลขสี่หลักว่าจะทำอย่างไร ในกรณ๊ย์ที่เมื่อถึงวันหนึ่งเลขมิเตอร์มันเดินมาถึง 9999 แล้วมันก็จะต้องเริ่มตั้งต้นที่เลข 0000 กันใหม่ เป็นปกติของมันอย่างนี้แหละค่ะ
ตัวเลขช่วงอื่นๆมันก็ไม่ยากหรอก ก็เอาเลขมิเตอร์ของเดือนนี้เป็นตัวตั้ง แล้วก็ลบด้วยเลขมิเตอร์ของเดือนที่แล้ว ก็ได้ส่วนต่างแล้ว แต่มันจะมีปัญหาช่วงจังหวะข้ามรอยต่อ จากเลขมิเตอร์สิ้นสุดที่ 9999 ของรอบเดิม มาเริ่มต้นที่ 0000 ของรอบใหม่นี่แหละค่ะ ว่าจะมีวิธีคิดอย่างไร
ตัวอย่างเช่น

เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 9950
พอมาเดือนนี้เลขมิเตอร์มันอยู่ที่ 0010

จากกรณีย์ตัวอย่างนี้ หากเราพิจารนาด้วยตนเองก็จะทราบจำนวนส่วนต่างว่า มันคือ 60 ยูนิต

ทีนี้ หากเราจะเขียนโปรแกรมให้มันคำนวนส่วนต่าง จากกรณีย์เลขตัวอย่างข้างต้นนั้น เราจะทำได้หรือเปล่าคะ ที่ว่าจะให้ 0010 ลบด้วย 9950 แล้วให้ผลมันได้ 60 อะค่ะ ต้องใช้สูตรคำนวนพิเศษอย่างไรคะ

พยายามคิดหาวิธีแล้วก็ไม่สำเร็จ
ในที่สุดก็จนด้วยเกล้า จึงต้องเข้ามาขอความช่วยเหลืออาจารย์อีกแล้วค่ะ

10 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R03763
if เลขใหม่ >= เลขเก่า then
    ผลลัพธ์ = เลขใหม่ - เลขเก่า
else
    ผลลัพธ์ = (10000 - เลขเก่า) + เลขใหม่
end if
2 @R03766
ขออนุญาตนำแนวคิดไปทดลองทำด้วยคนครับ

ขอบคุณครับ
3 @R03767
ว้าว..ได้ผลดีเยี่ยมตามที่ต้องการเลยค่ะอาจารย์
หนูรีบตื่นมาทดสอบตั้งแต่เช้าด้วยความดีใจ ที่สามารถผ่านปัญหานี้ได้แล้วค่ะ

ขอบพระคุณอย่างยิ่งค่ะอาจารย์
4 @R03768
อาจารย์สันติสุขครับ

ใช้โจทย์เดิมของเจ้าของกระทู้นะครับ

แต่เพิ่มตรงว่า

เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 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

หนูทดสอบแล้วก็ใช้ได้นี่คะ
6 @R03770
ขอเรียนถามปัญหาใหม่เพิ่มเติมค่ะอาจารย์
จากการทดสอบดูหลายๆรูปแบบ หนูพบปัญหาอยากขอความช่วยเหลือเพิ่มเติมดังนี้ค่ะ

เดือนที่แล้วเลขมิเตอร์มันอยู่ที่ 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
- โค้ดนี้จะไม่ทำงาน
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
9 @R03777
ได้ค่ะอาจารย์
ใช้วิธีตรวจจำนวนปริมาณยูนิต ตามที่ท่านแนะนำก็เป็นทางที่ดีเลยค่ะ

ขอขอบคุณอาจารย์ทั้งสองเป็นอย่างยิ่งค่ะ
10 @R03802
ขอบคุณเช่นกันครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2839s