我正在使用C#编写代码,其中使用OLEDB连接字符串连接MS Access数据库。我有一个表单,可以根据某些条件在datagridview中显示来自数据库的数据。以下是条件:
a)人(来自]中的数据库>
b)进程(来自文本框中的数据库)
c)起始日期(日期选择器)
d)迄今为止(日期选择器)
结果是我想要的:首先,我选择人员和流程,然后选择从日期,然后选择到日期,然后单击查看按钮。它应根据我选择的上述条件显示来自MS-Access的数据。
我已经尝试过以下方法:
代码:
1.对于人员和流程过滤器:DataView DV = new DataView(dt1); DV.RowFilter = string.Format("[Person] LIKE '%{0}%'", textBox5.Text); dataGridView1.DataSource = DV;
- 对于两个日期之间的日期时间,我尝试了很多和Google尝试,但没有找到答案。我在下面尝试过:
a)
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;
For connection I am trying OLEDB connection.
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();
this code is working but problem is that it shows all data not based on criteria based data.
I expect the output in Datagridview based on all criteria. Show only data which falls under all criteria.
我正在使用C#编写代码,其中使用OLEDB连接字符串连接MS Access数据库。我有一个表单,可以根据某些条件在datagridview中显示来自数据库的数据。以下是条件:...
我看不到您描述您的结果出了什么问题。如果您要寻求一般帮助,请参阅以下示例。请记住: