none
如何禁止時間內的選取 RRS feed

  • 问题

  • 各位大大高手們好,我有一小問題想請大大們幫幫我,以下是我的程式碼

    Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=e:\try.mdb"
            Dim queryString As String = "SELECT * FROM 器材 WHERE 用具=? AND 啟用時間<>? AND 結束時間<=?"
            Using connection As New OleDbConnection(connectionString)
                Dim command As New OleDbCommand(queryString, connection)
                command.Parameters.Add("用具", OleDbType.VarWChar).Value = ComboBox1.Text
                command.Parameters.Add("啟用時間", OleDbType.VarChar).Value = DateTimePicker1.Value.ToString("HH:mm")
                command.Parameters.Add("結束時間", OleDbType.VarChar).Value = DateTimePicker2.Value.ToString("HH:mm")
                connection.Open()
                Dim reader As OleDbDataReader = command.ExecuteReader()
                If reader.HasRows Then
                    MessageBox.Show(DateTimePicker1.Value.ToString & "至" & DateTimePicker2.Value.ToString & "已有人在使用了,所以不能登記借用")
                Else
                End If
                reader.Close()
            End Using
        End Sub
    End Class

    我想要做出的效果是,在新增記錄的時候,不管是頭或是尾的時間都要抓出來判斷,只要其中一個是處於別人已經借用的時間段之內,就不允許借用。可是我想不出什麼辦法來完成,所以想請高手們幫幫我解決這個問題,謝謝。

    E 代表已存在於資料庫的時段, 而ABCD則代表了如果你輸入一定會重疊的狀態, 也就是這四個狀態應該都是不允許新增.

    A: A 的開始時間 <= E 的開始時間 且 A 的結束時間 <= E 的結束時間

    B: B 的開始時間 >= E 的開始時間 且 B 的結束時間  >= E 的結束時間

    C: C 的開始時間 >= E 的開始時間 且 C 的結束時間 <= E 的結束時間

    D: D 的開始時間 <= E 的開始時間 且 D 的結束時間 >= E 的結束時間

    所以只要非以上四個狀況, 就可以新增.

     

     

    2010年6月22日 15:32

答案