检查重叠日期

时间:2015-03-11 18:47:04

标签: vb.net

我希望我的代码显示我输入的日期是否在我的数据库中重叠。但问题是这段代码正在比较我的数据库中的每条记录。帮帮我,对不起我的坏英语

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    connector()
    Dim READER As MySqlDataReader

    Try
        MysqlConn.Open()
        Dim query As String
        Dim dbCheckIn, dbCheckOut As Date

        ''  query = "SELECT * FROM reservationtable WHERE CheckIn <= '" & dtpCO.Text & "' And CheckOut >= '" & dtpCI.Text & "'"
        query = "SELECT CheckIn, CheckOut FROM reservationtable"


        COMMAND = New MySqlCommand(query, MysqlConn)
        READER = COMMAND.ExecuteReader

        While READER.Read
            dbCheckIn = READER("CheckIn")
            dbCheckOut = READER("CheckOut")
            Dim a As String
            a = dbCheckIn <= dtpCO.Text And dbCheckOut >= dtpCI.Text


            If a = True Then

                MsgBox("Date Not Available!")

            ElseIf a = Not True Then

                MsgBox("Date Available!")

            End If
        End While

        updateGrid()
        MysqlConn.Close()
    Catch ex As MySqlException
        MessageBox.Show(ex.Message)
    Finally
        MysqlConn.Dispose()
    End Try

End Sub

1 个答案:

答案 0 :(得分:0)

尝试将WHERE子句添加到SQL语句中以将结果限制为任何被视为重叠的内容,因此如果返回任何记录,则它是重叠的,如果没有返回则不是。例如:

Dim textAsDate = New DateTime.Parse(dtpCO.Text)   

Dim query = "SELECT CheckIn FROM reservationtable
    WHERE CheckIn <= " + txtAsDate + " AND CheckOut >= " + txtAsDate

Dim command= New MySqlCommand(query, MysqlConn)

Using dr As SqlDataReader = command.ExecuteReader()

    Dim datatable= New DataTable()
    datatable.Load(dr)

    If datatable.Rows.Count > 0 Then
         ' Not available
    Else
         ' Available
    End If

End Using

现在您应该能够检查是否有任何值返回,如果是,则发送&#34;日期不可用&#34;消息。

相关问题