Как найти между двумя датами, такими как 01 мая 2018 года и 25 мая 2018 года?
Когда я фильтрую дату, как 01-May-2018 до 31-May-2018, то результат показывает май месяц завершен, но его показывают другие месяцы дата, как 02-Apr-2018 и все даты в 01to31 в datagridview.
мне приходится искать только месяц за месяцем.
его шоу выглядит так
02-Апр-2018
03-Апр-2018
01-май-2018
08-май-2018
10-май-2018
12-май-2018
31-май-2018
15-Jun-2018
28 июня 2018 года
?????
Что я уже пробовал:
<pre> Private Function GetRows() As DataTable Dim DateStr As DateTime = DateTimePicker1.Value.Date Dim DateEnd As DateTime = DateTimePicker2.Value.Date Dim dtable As DataTable = New DataTable Dim con1 As OleDbConnection ' Try con1 = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\WB001.mdb;Jet OLEDB:Database Password=jhk312;") Using cmd1 As OleDbCommand = New OleDbCommand("SELECT * FROM DW1 WHERE Date BETWEEN #" & DateStr.ToString & "# And #" & DateEnd.ToString & "#", con1) ' With cmd1.Parameters '.Add("@dt1", OleDbType.Date).Value = DateTimePicker1.Value ' .Add("@dt2", OleDbType.Date).Value = DateTimePicker2.Value ' End With Dim adp As New OleDbDataAdapter(cmd1) ' con1.Open() adp.Fill(dtable) DataGridView1.DataSource = dtable con1.Close() 'End Using End Using ' Catch ex As Exception 'MsgBox("Error") ' End Try End Function
Richard Deeming
НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
Using cmd1 As OleDbCommand = New OleDbCommand("SELECT * FROM DW1 WHERE Date BETWEEN ? And ?", con1) cmd1.Parameters.AddWithValue("p1", DateStr) cmd1.Parameters.AddWithValue("p2", DateEnd)
Richard Deeming
Вы можете упростить строку подключения:
con1 = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\WB001.mdb;Jet OLEDB:Database Password=jhk312;")
По умолчанию,
|DataDirectory|
всегда будет указывать на папку приложения для приложений Windows, и App_Data
папка для ASP.NET приложения.Однако вы должны быть осторожны, если ваше приложение будет развернуто в папке "Program Files". Обычные пользователи не имеют прав на запись в файлы по этому пути, поэтому ваше приложение не сможет использовать базу данных Access, хранящуюся в каталоге приложения. Видеть Где я должен хранить свои данные?[^] для получения дополнительной информации.
Richard Deeming
Какой тип данных у вас есть Date
столбец определяется как? Это звучит так, как будто он хранится в виде строки, а не реальной даты.
Arnav121
у меня есть сохраненные столбцы даты, тип данных-текст.
Arnav121
Итак, вы говорите, что приложение Startpath удалить и ввести там |DataDirectory| ??????
Arnav121
Тхнакс снова за помощью после смены своей работы велик.