0

我正在尝试使用 monthcalendar 中的 selectionstart 和 selectionend 属性在表中的两个登录日期之间进行过滤。当我选择一天时,这不能正常工作。如果我选择有问题的前一天和后一天,那么它会。我的数据库中的时间值是这样的:

2/23/2010 11:17:01 AM 

登录和注销都属于这种类型。我有一种感觉,当我使用 selectionstart 和 selection end 时,我只会得到 mm/dd/yyyy,而数据库中的内容就是那个和时间。

这是我的代码:

Dim cn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim str As String
    Dim dr As OleDbDataReader

    DataGridView1.Rows.Clear()

    Try
        cn = New OleDbConnection("Provider=microsoft.Jet.OLEDB.4.0;Data Source=G:\Sean\BMSBonder3_0.mdb;")
        cn.Open()
        str = "Select BonderIdentifier, UserName, Login, Logout From [Session] Where Login >= ? AND Logout <= ? AND BonderIdentifier = ?"
        cmd = New OleDbCommand(str, cn)
        cmd.Parameters.AddWithValue("Start", MonthCalendar1.SelectionStart)
        cmd.Parameters.AddWithValue("End", MonthCalendar1.SelectionEnd)
        cmd.Parameters.AddWithValue("BID", ListBox1.SelectedItem)

        dr = cmd.ExecuteReader

        While dr.Read()
            If dr.Item(0).ToString <> "" Then
                DataGridView1.Rows.Add(dr.Item(0), dr.Item(1), dr.Item(2), dr.Item(3))

            End If
        End While

        dr.Close()
        cn.Close()

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
4

2 回答 2

0

哇,一个很晚的回复,但我这样做是因为也许有人在寻找这个会遇到这个页面。

我认为而不是使用:

cmd.Parameters.AddWithValue("Start", MonthCalendar1.SelectionStart)
cmd.Parameters.AddWithValue("End", MonthCalendar1.SelectionEnd)

你应该使用

cmd.Parameters.AddWithValue("Start", MonthCalendar1.SelectionRange.Start)
cmd.Parameters.AddWithValue("End", MonthCalendar1.SelectionRange.End)  
于 2012-07-25T18:34:52.203 回答
-1

如果您从远处看问题,您会发现在注销日期之后无法登录,与注销一样,您在登录日期之前无法注销。这意味着您必须在查询中为登录和注销指定边界。您的查询应如下所示:

Select BonderIdentifier, UserName, Login, Logout From [Session] Where Login >= ? AND login <= ? AND logout >= ? AND Logout <= ? AND BonderIdentifier = ?

参数将在哪里:

cmd.Parameters.AddWithValue("Start1", MonthCalendar1.SelectionRange.Start)
cmd.Parameters.AddWithValue("Start2", MonthCalendar1.SelectionRange.End)
cmd.Parameters.AddWithValue("End1", MonthCalendar1.SelectionRange.Start)
cmd.Parameters.AddWithValue("End2", MonthCalendar1.SelectionRange.End)
于 2017-03-09T12:47:46.970 回答