สวัสดีค่ะ หนูต้องการวิธีการ ห้ามลงเวลาซ้ำในระยะเวลาที่จอง


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

08 ธ.ค. 63 , 09:27:59
อ่าน 1604 ครั้ง

MiKu

คือหนูกำลัง ทำการใช้ห้องประชุม tbการจอง จะมี วันที่  เวลาจอง เวลาเลิก ผู้จอง
หนูต้องการแบบ ห้ามจองซ้ำกันในช่วง เวลาจอง กับ เวลาเลิก เช่น
จอง วันที่ 1/1/64 เวลาจอง 08.00 เวลาเลิก 09.00
เราจะไม่สามารถจองวันเดี่ยวกันในเวลาระหว่าง 08.00-09.00 รบกวนขอแนวทางหน่อยนะค่ะ
 :miao: :miao:


 

08 ธ.ค. 63 , 10:54:00
ตอบกลับ #1

PNR

ผมได้ทำตัวอย่างการกำหนด ช่วงเวลาในแต่ละวัน โดยกำหนดเช็คค่าจาก
1.วันที่ textbox ชื่อ OnDate
2. เวลาเริ่ม ชื่อ StartTime
3. เวลาสิ้นสุดชื่อ EndTime

ตารางชื่อ table1
มีฟิลล์เหมือนชื่อ คอนโทรล

โค๊ด: [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, "สถานะการจอง"
               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
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

08 ธ.ค. 63 , 13:50:27
ตอบกลับ #2

MiKu

อ.ค่ะหนูลองทำตามพอใส่เวลา วันที่ อะไรตรงกัน ก็ขึ้นแต่ "สามารถจองช่วงเวลานี้ได้"

 

08 ธ.ค. 63 , 14:28:55
ตอบกลับ #3

PNR

เปลี่ยน Fotmat จาก พุทธศักราช เป็น คริสต์ศักราช ก็ได้ละครับ

Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

14 ธ.ค. 63 , 09:15:58
ตอบกลับ #4

MiKu

ขอบคุณมากๆเรยนะคะ  :love:

 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

14 ธ.ค. 63 , 11:20:30
ตอบกลับ #5

MiKu

หนูขอถามเพิ่มเติม กรณีที่ จองห้องประชุม แบบเวลาข้ามวัน เช่น 22.00 ถึง 01.00 ของอีกวัน จะต้องทำแบบไหนค่ะ เวลาตี 1 มันยังเป็นเวลาของวันที่เดิมที่เรากรอก

 

14 ธ.ค. 63 , 12:36:23
ตอบกลับ #6

PNR

งั้น Endtime รูปแบบข้อมูลต้องเป็นแบบ General Date ครับ

ลองดูตัวอย่างการเช็คเงื่อนไข โดยกำหนดว่า ถ้า Endtime น้อยกว่า StartTime ให้บวกไปอีก 1 วันเช่น

Private Sub SaveData()
 Dim rst As DAO.Recordset
 Dim dtEndtime As String
 
            Set rst = CurrentDb.OpenRecordset("table1", dbOpenDynaset)
            rst.AddNew
            rst!Ondate = Me.Ondate
           
            If Me.EndTime < Me.StartTime Then
            dtEndtime = Me.Ondate + 1 & " " & EndTime
            Else
            dtEndtime = Me.Ondate & " " & EndTime
            End If
           
            rst!StartTime = Me.StartTime
            rst!EndTime = CDate(dtEndtime)
            rst.Update
           
            rst.Close
            Set rst = Nothing
End Sub


และกำหนด รูปแบบข้อมูลในตารางเป็น Date/Time กำหนดเป็น General Date
« แก้ไขครั้งสุดท้าย: 14 ธ.ค. 63 , 12:43:05 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

25 ธ.ค. 63 , 15:19:24
ตอบกลับ #7

MiKu

ขอบคุณมากเรยนะคะ

 
โพสต์นี้ได้รับคำขอบคุณจาก: PNR


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


 

Sitemap 1 2 3 4 5