พี่ๆ อาจารย์ ช่วยคิดหรือแนะแนวทางให้ผมหน่อยครับ
กระทู้เก่าบอร์ด อ.Yeadram

 945   4
URL.หัวข้อ / URL
พี่ๆ อาจารย์ ช่วยคิดหรือแนะแนวทางให้ผมหน่อยครับ

เรียน พี่ๆ อาจารย์ ช่วยคิดหรือแนะแนวทางให้ผมหน่อยครับ
อาจจะเป็น IF หรือ Case ก็ได้ช่วยแนะนำหน่อยครับ มีโจรย์ดังนี้ครับ

พอดีมันติดที่เป็นเวลาผมเลยคิดไม่ออกครับว่าจะคำนวณยังไง
โจรย์ที่ได้มามีอย่างงี้ครับ
มีรอบเวลาการแจ้งตรวจดังนี้.

หากมีการแจ้งตรวจ(INF) ให้ทำการกดปุ่ม ChackBox(CB) แล้วให้เช็คกับรอบเวลา(CT) โดยให้เลือกรอบเวลาทุกครั้งที่ทำการแจ้งตรวจ เช่น ทำการแจ้ง 6:20 โดยเลือกรอบเวลา 10:00 และกดเลือกถูกที่ CB ก็ให้ค่าเท่ากับ T
เงื่อนไข
   -หากเลือกถูก(CB) และแจ้งตรวจล่วงหน้าก่อนรอบเวลา 01.50 ชัวโมงให้ = T
   -หากเลือกถูก(CB) เวลาแจ้งตรวจใกล้รอบเกิน 01.50 แต่ไม่ถึง 01.00 ชัวโมงให้ =Y
   -หากไม่เลือกถูก(CB)และเวลาแจ้งตรวจใกล้รอบเกิน 01.00 ชัวโมงให้ =R

รอบเวลา
10:00
14:00
16:00
20:00
1:00
3:00

ผมจะเขียนฟังชั้นหรือให้โปรแกรมคำนวณยังไงครับ งงๆหรือเปล่ากับคำถามครับ
ขอบคุณครับผม



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

1 @R20944
Dim T1 As Integer
Dim T2 As Integer    

Dim T3 As Integer
Dim T22 As Integer
Dim T32 As Integer
T1 = CT.Value
T2 = INF.Value
T22 = Left([T2], 2)    'คิดเวลาชั่วโมงให้เป็น เช่น 01:30 คิดทางซ้ายขวาบวกกัน
T23 = Right([T2], 2)
T2 = (T22 * 60) + (T23)   
    If CK.Value = True Then
               If T2 - T1 > 110 Then
               T3 = T
               ANSWER.Value = T3
               ElseIf T2 - T1 > 110 And T2 < 120 Then
                            T3 = Y
                            ANSWER.Value = T3
                            Else
                            T3 = R
                             ANSWER.Value = T3
                    End If
     End If
จำนวนรอบผมทำให้เป็นนาที
แต่ผมติดตรงบรรทัด T2 = INF.Value ครับเหมือนมันไม่ยอมว่าวันที่ไม่ใช่ integer
ผมจะต้องแก้ยังไงครับ ผมมั่วๆได้มาแบบนี้หละครับ ช่วยแนะด้วยครับ

ขอบคุณครับ
2 @R20946
อ่านไม่รู้เรื่องเลย เว้นวรรคไม่มี จับใจความไม่ค่อยได้ ดำน้ำไปแล้วกัน โค้ดออกมาแบบนี้มังครับ ลองไปปรับดูแล้วกัน

    Select Case Abs(DateDiff("n", CDate(INF), CDate(CT)))
        Case Is > 110
            If CB Then Answer = "T"
        Case 60 To 110
            If CB Then Answer = "Y"
        Case Else
            If Not CB Then Answer = "R"
    End Select
3 @R20947
แต่ระวังเรื่องของเวลาที่ข้ามวันด้วยครับ ไปทดสอบดูเองแล้วกัน
4 @R20948
ขอบคุณครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3122s