C#在Datagridview中显示两个日期之间的数据。 DatetimePicker或Textbox中的日期

问题描述 投票:0回答:1

我正在使用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;
  1. 对于两个日期之间的日期时间,我尝试了很多和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中显示来自数据库的数据。以下是条件:...

c# datagridview ms-access-2010 oledbconnection oledbcommand
1个回答
0
投票

我看不到您描述您的结果出了什么问题。如果您要寻求一般帮助,请参阅以下示例。请记住:

© www.soinside.com 2019 - 2024. All rights reserved.