Использование элемента управления monthcalendar, когда я выбираю день и использую его как фильтр для моего SQL, он не работает должным образом - PullRequest
0 голосов
/ 24 февраля 2010

Я пытаюсь использовать атрибуты selectionstart и selectionend из monthcalendar для фильтрации между двумя датами входа в таблицу. Когда я выбрал один день, это не работает правильно. Если я выбрал день раньше и день после дня, о котором идет речь, то так и будет. Значения времени в моей БД выглядят так:

2/23/2010 11:17:01 AM 

Как логин, так и выход из системы относятся к этому типу. У меня такое ощущение, что когда я использую selectionstart и selection end, я просто получаю мм / дд / гггг, и то, что в БД, это и время.

Вот мой код:

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

Ответы [ 2 ]

0 голосов
/ 09 марта 2017

Если вы посмотрите на проблему на расстоянии, вы поймете, что вы не можете войти в систему после даты выхода из системы, так же, как и в случае выхода из системы, вы не можете выйти из системы до даты входа в систему. Это означает, что вам нужно будет указать границы для вашего логина и выхода из системы в вашем запросе. Ваш запрос должен выглядеть следующим образом:

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)
0 голосов
/ 25 июля 2012

Ничего себе, очень поздний ответ, но я делаю это, потому что, возможно, кто-то ищет это, наткнется на эту страницу.

Я думаю вместо использования:

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)  
...