Выбор строк из базы данных Access по критериям поиска по дате в форме VB.NET
У меня очень простая проблема. У меня есть несколько элементов управления DatePicker в моей форме VB.NET, и пользователи выбирают «startDate» и «endDate», и отображаются все строки из связанной таблицы, которые имеютorderDate
между выбранными пользователем датами начала и окончания.
Ниже приведен соответствующий код:
Private Sub generate_report_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles generate_report.Click
Try
Dim con As New OleDb.OleDbConnection
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\KHMSDB.accdb"
con.Open()
Dim sql As String
Dim selected As String = ""
Dim ds As DataSet = New DataSet
Dim adapter As New OleDb.OleDbDataAdapter
sql = "SELECT OrderDate AS `Order Date and Time`, Items AS `Ordered Items` FROM Orders WHERE Format(Orders.OrderDate,'mm/dd/yyyy') >= #" + startDate.Value.Date + "# AND Format(Orders.OrderDate,'mm/dd/yyyy') <= #" + endDate.Value.Date + "#"
adapter.SelectCommand = New OleDb.OleDbCommand(sql, con)
adapter.Fill(ds)
gridReport.DataSource = ds.Tables(0)
Catch ex As Exception
MsgBox("Operation failed. " + ex.ToString)
End Try
Если я сохраняю новую строку в базе данных под сегодняшней датой и оставляю даты «начала» и «конца» как даты по умолчанию (то есть сегодняшнюю дату), она не показывает новую строку, которую я только что сохранил. Введенная сегодня новая строка отображается только в том случае, если я перенес «дату начала» до 30 ноября. Затем я добавляю новую строку с датой 12 декабря. Опять же, он не будет отображаться при выборе даты окончания> = 12 декабря, он будет отображаться только при переносе даты начала до 1 декабря. Я решил ввести строку, датированную 21 ноября, и выполнение запроса с начальной и конечной датами 21 ноября показывает эту строку. Затем я ввел новую строку 8 января ... и теперь любая комбинация перемещения вверх по startDate и / или перемещения вниз по endDate просто не отображает январский порядок. В чем дело?? Я на самом деле уже пробовал этот код до ноября, и он работал отлично!