ตรวจสอบเวลาที่ซ้อนกัน



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

27 ก.ค. 61 , 14:06:20
อ่าน 533 ครั้ง

eqsan

ตรวจสอบเวลาที่ซ้อนกัน
« เมื่อ: 27 ก.ค. 61 , 14:06:20 »
สวัสดีครับ  อาจารย์ทุกท่าน
ผมรบกวนขอความรู้ครับ
ในกรณีการทำโปรแกรมจองห้อง เราจะเขียน Code ในการตรวจสอบเวลาการจองห้องอย่างไรครับ
เงื่อนไขคือ  จะไม่ให้สามารถจองห้องคร่อมเวลาของคนอื่นได้  ประมาณนี้ครับ

หรือพอตัวอย่าง โปรแกรมจองห้อง หรือเปล่าครับ

รบกวนด้วยครับ

 

27 ก.ค. 61 , 15:46:50
ตอบกลับ #1

ปิ่นณรงค์

: ตรวจสอบเวลาที่ซ้อนกัน
« ตอบกลับ #1 เมื่อ: 27 ก.ค. 61 , 15:46:50 »

ผมได้ทำตัวอย่างการกำหนด ช่วงเวลาในแต่ละวัน โดยกำหนดเช็คค่าจาก
1.วันที่ textbox ชื่อ OnDate
2. เวลาเริ่ม ชื่อ StartTime
3. เวลาสิ้นสุดชื่อ EndTime
โค๊ด: [Select]
Private Sub Command1_Click()
      If Me.Dirty Then
        Dim strWhere As String, strMsg As String
            With Me
            strWhere = "(([StartTime]<#%S#) AND " & _
                       "([EndTime]>#%E#) AND " & _
                       "([OnDate]=#%D#))"
            strWhere = Replace(strWhere, "%S", Format(.EndTime, "HH:mm:ss"))
            strWhere = Replace(strWhere, "%E", Format(.StartTime, "HH:mm:ss"))
             strWhere = Replace(strWhere, "%D", Format(.OnDate, "mm/dd/yy"))
 
            Dim rsDao As DAO.Recordset
            Set rsDao = CurrentDb.OpenRecordset("SELECT * FROM [Table1] WHERE " & strWhere, dbOpenDynaset)
             If .OnDate = .OnDate And .EndTime < .StartTime Then
            MsgBox "ท่านระบุช่วงเวลาผิด เวลาเริ่มต้องไม่น้อยกว่าเวลาสิ้นสุด", vbInformation, "แจ้งเตือน"
            ElseIf rsDao.RecordCount = 0 Then
               MsgBox "สามารถจองช่วงเวลานี้ได้", vbInformation, "สถานะการจอง"
                DoCmd.Save
                DoCmd.GoToRecord , , acNewRec
                Me.SubTable1.Requery
                Exit Sub
            Else
                MsgBox "มีการจองช่วงเวลานี้แล้ว", vbInformation, "สถานะการจอง"
 
                Do While Not rsDao.EOF
                        strMsg = Replace(strMsg, "%D", Format(rsDao!OnDate, "dd-mmm-yy"))
                        strMsg = Replace(strMsg, "%S", Format(rsDao![StartTime], "HH:mm"))
                        strMsg = Replace(strMsg, "%E", Format(rsDao![EndTime], "HH:mm"))
                    rsDao.MoveNext
                Loop
            End If
                Set rsDao = Nothing
            End With
    End If
End Sub

ที่จริงผมกำลังทำโปรแกรมให้พี่อยู่นะครับ แต่ตอนนี้ล่าช้าเพราะผมเล่นดนตรี ตามงานต่างๆ ด้วย งานบวช งานแต่งเยอะมากช่วงนี้ เลยไม่ค่อยว่างนั่งทำ
ถ้ารีบจริงๆ และติดแค่ตรงการเช็คช่วงเวลาก็ลองนำโค้ดนี้ไปปรับใช้ดูนะครับ เพราะมันสามารถเช็คช่วงเวลาการจองได้ ถ้าช่วงเวลานั้นมีการจองแล้ว
ก็จะไม่สามารถจองในช่วงเวลานั้นได้อีกครับ ลองนำไปปรับใช้ดูครับ
« แก้ไขครั้งสุดท้าย: 28 ก.ค. 61 , 21:27:27 โดย ปิ่นณรงค์ »
:love: :grin:
 

27 ก.ค. 61 , 19:52:40
ตอบกลับ #2

eqsan

: ตรวจสอบเวลาที่ซ้อนกัน
« ตอบกลับ #2 เมื่อ: 27 ก.ค. 61 , 19:52:40 »

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

ขอบคุณมากครับ อาจารย์

« แก้ไขครั้งสุดท้าย: 27 ก.ค. 61 , 20:04:59 โดย eqsan »

 

30 ส.ค. 61 , 14:48:54
ตอบกลับ #3

ปิ่นณรงค์

: ตรวจสอบเวลาที่ซ้อนกัน
« ตอบกลับ #3 เมื่อ: 30 ส.ค. 61 , 14:48:54 »
เปลี่ยน ปฏิทิน จาก พ.ศ. เป็น ค.ศ. นะครับ
:love: :grin:
 

01 ก.ย. 61 , 10:16:57
ตอบกลับ #4

nonc31

: ตรวจสอบเวลาที่ซ้อนกัน
« ตอบกลับ #4 เมื่อ: 01 ก.ย. 61 , 10:16:57 »
แบบนี้ก็พอไปได้  :XD:

 


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