C# показывает данные между двумя датами в datagridview. Даты из datetimepicker или текстового поля
Я работаю над кодом на языке C#, где я использовал строку подключения OLEDB для подключения базы данных MS access. У меня есть форма, где я показываю данные из базы данных в datagridview по некоторым критериям. Ниже приведены критерии:
а) человек (пришел из базы данных в)
б) процесс (исходящий из базы данных в текстовом поле)
c) от даты (Datetimepicker)
d) На сегодняшний день (Datetimepicker)
Результат, который я хочу: сначала я выбираю человека, а затем процесс и чем от даты, а затем до даты и нажимаю на кнопку просмотра. который должен показывать данные из MS-Access на основе вышеуказанных критериев, которые я выбрал.
Что я уже пробовал:
1. для фильтра человека и процесса:
DataView DV = new DataView(dt1); DV.RowFilter = string.Format("[Person] LIKE '%{0}%'", textBox5.Text); dataGridView1.DataSource = DV;
Для даты времени между двумя датами я перепробовал много и Google lots, но не нашел ответа. Я попробовал ниже:
один)
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString); string queryString = ""; queryString = "SELECT * FROM Table1 WHERE dob BETWEEN @startdate AND @enddate"; System.Data.SqlClient.SqlCommand sqlCmd = new System.Data.SqlClient.SqlCommand(queryString, con); sqlCmd.Parameters.Add("@startdate", System.Data.SqlDbType.Date).Value = textBox7.Text; sqlCmd.Parameters.Add("@enddate", System.Data.SqlDbType.Date).Value = textBox8.Text; System.Data.SqlClient.SqlDataAdapter dataAdapter = new System.Data.SqlClient.SqlDataAdapter(sqlCmd); System.Data.DataSet dataSet = new System.Data.DataSet(); dataAdapter.Fill(dataSet); GridView1.DataSource = dataSet; GridView1.DataBind(); b) string FD = ""; FD = dateTimePicker4.Value.ToString("dd-MM-yyyy"); string TD = ""; TD = dateTimePicker5.Value.ToString("dd-MM-yyyy"); connection.Close(); connection.Open(); OleDbCommand command123 = new OleDbCommand(); command123.Connection = connection; string query123 = "select * from Table1 where [P Date] between date '"# + dateTimePicker4.Text.ToString() + #"' and date '"# + dateTimePicker5.Text.ToString() + #"'" command123.CommandText = query123; OleDbDataAdapter da123 = new OleDbDataAdapter(command123); DataTable dt123 = new DataTable(); da123.Fill(dt123); dataGridView1.DataSource = dt123; c) DataTable dt = new DataTable(); da.Fill(dt); DataView DV = new DataView(dt1); DV.RowFilter = string.Format("[P Date] >=" + textBox7.Text + " and <" + textBox8.Text + ""); dataGridView1.DataSource = DV; d) DataTable dt1 = new DataTable(); DataView DV = new DataView(dt1); //DV.RowFilter = "[P Date] IN (#11/01/2019#, #11/11/2019#)"; //DV.RowFilter = "[P Date] >=#"+dateTimePicker4.Text+"# and [P Date] <=#"+dateTimePicker5.Text+"#"; //dataView.RowFilter = "Date IN (#12/31/2008#, #1/1/2009#)" // date time values //DV.RowFilter ="([P Date] >=CDate('dateTimePicker4.Text')) and ([P Date] <=CDate('dateTimePicker5.Text'))"; //DV.RowFilter = string.Format(CultureInfo.InvariantCulture.DateTimeFormat, "([P Date]>=#{dateTimePicker4.text}#) and ([P Date] <=#{dateTimePicker5.Text}#)"); dataGridView1.DataSource = DV;
Для подключения я пытаюсь подключиться к OLEDB.
connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DatabasePath.accdb; Jet OLEDB:Database Password=password"; connection.Close(); connection.Open(); OleDbCommand command1 = new OleDbCommand(); command1.Connection = connection; //Select all column use belw query string query = "select * from Table1"; command1.CommandText = query; OleDbDataAdapter da = new OleDbDataAdapter(command1); DataTable dt = new DataTable(); da.Fill(dt); dataGridView1.DataSource = dt; connection.Close();
этот код работает, но проблема в том, что он показывает все данные, не основанные на критериальных данных.
Я ожидаю вывода в Datagridview на основе всех критериев. Показывать только те данные, которые подпадают под все критерии.