【问题标题】:Can't filter datagridview between two datetimepicker无法在两个 datetimepicker 之间过滤 datagridview
【发布时间】:2020-04-01 09:04:51
【问题描述】:

美好的一天,我正在尝试过滤两个 datetimepicker 之间的 datagridview。

我试过了

public void LoadAllBorrowHistory()
    {
        int i = 0;
        if (cboStatus.Text == "All Records")
        {
            gunaDataGridView1.Rows.Clear();
            cn.Open();
            cm = new SqlCommand("SELECT bb.borrowID,  bb.bookTitle,  bb.studentNum, (s.lastName + ' ' + s.firstName) AS Name, bb.status FROM tblBorrowedBook as bb INNER JOIN tblStudent AS s ON bb.studentID = s.studentID WHERE dateBorrowed BETWEEN '" + dt1.Value + "'AND'" + dt2.Value + "'", cn);
            dr = cm.ExecuteReader();
            while (dr.Read())
            {
                i += 1;
                gunaDataGridView1.Rows.Add(i, dr["borrowID"].ToString(), dr["bookTitle"].ToString(), dr["studentNum"].ToString(), dr["Name"].ToString(), dr["status"].ToString());
            }
            dr.Close();
            cn.Close();
        }
        else
        {
            gunaDataGridView1.Rows.Clear();
            cn.Open();
            cm = new SqlCommand("SELECT bb.borrowID,  bb.bookTitle,  bb.studentNum, (s.lastName + ' ' + s.firstName) AS Name, bb.status FROM tblBorrowedBook as bb INNER JOIN tblStudent AS s ON bb.studentID = s.studentID WHERE status LIKE '" + cboStatus.Text + "%'", cn);
            dr = cm.ExecuteReader();
            while (dr.Read())
            {
                i += 1;
                gunaDataGridView1.Rows.Add(i, dr["borrowID"].ToString(), dr["bookTitle"].ToString(), dr["studentNum"].ToString(), dr["Name"].ToString(), dr["status"].ToString());
            }
            dr.Close();
            cn.Close();
        }
    }

抛出错误

'从字符串转换日期和/或时间时转换失败。'

我已将日期时间值设置为DateTime.Now,所以我不知道为什么会收到此错误。请帮忙。

【问题讨论】:

  • 您必须将 c# datetime 值转换为正确的 sql datetime 值,然后它应该可以工作
  • @kemchan:不是 SQL 工作方面的专家,但 dt1.Value.ToString() 是否解决了问题?也是 GoodDay 问候的 ↑ ;)

标签: c# sql-server winforms


【解决方案1】:

我已经改用参数化查询解决了我的问题。

public void LoadAllBorrowHistory()
    {
        int i = 0;
        if (cboStatus.Text == "All Records")
        {
            gunaDataGridView1.Rows.Clear();
            cn.Open();
            cm = new SqlCommand("SELECT bb.borrowID,  bb.bookTitle,  bb.studentNum, (s.lastName + ' ' + s.firstName) AS Name, bb.dateBorrowed, bb.dueDate, bb.status FROM tblBorrowedBook as bb INNER JOIN tblStudent AS s ON bb.studentID = s.studentID WHERE dateBorrowed BETWEEN @dt1 AND @dt2", cn);
            cm.Parameters.AddWithValue("@dt1", dt1.Value);
            cm.Parameters.AddWithValue("@dt2", dt2.Value);
            dr = cm.ExecuteReader();
            while (dr.Read())
            {
                i += 1;
                gunaDataGridView1.Rows.Add(i, dr["borrowID"].ToString(), dr["bookTitle"].ToString(), dr["studentNum"].ToString(), dr["Name"].ToString(), Convert.ToDateTime(dr["dateBorrowed"]).ToString("MM/dd/yyyy"), Convert.ToDateTime(dr["dueDate"]).ToString("MM/dd/yyyy"),  dr["status"].ToString());
            }
            dr.Close();
            cn.Close();
        }
        else
        {
            gunaDataGridView1.Rows.Clear();
            cn.Open();
            cm = new SqlCommand("SELECT bb.borrowID,  bb.bookTitle,  bb.studentNum, (s.lastName + ' ' + s.firstName) AS Name, bb.dateBorrowed, bb.dueDate ,bb.status FROM tblBorrowedBook as bb INNER JOIN tblStudent AS s ON bb.studentID = s.studentID WHERE status LIKE @status AND dateBorrowed BETWEEN @dt1 AND @dt2", cn);
            cm.Parameters.AddWithValue("@status", cboStatus.Text);
            cm.Parameters.AddWithValue("@dt1", dt1.Value);
            cm.Parameters.AddWithValue("@dt2", dt2.Value);
            dr = cm.ExecuteReader();
            while (dr.Read())
            {
                i += 1;
                gunaDataGridView1.Rows.Add(i, dr["borrowID"].ToString(), dr["bookTitle"].ToString(), dr["studentNum"].ToString(), dr["Name"].ToString(), Convert.ToDateTime(dr["dateBorrowed"]).ToString("MM/dd/yyyy"), Convert.ToDateTime(dr["dueDate"]).ToString("MM/dd/yyyy"), dr["status"].ToString());
            }
            dr.Close();
            cn.Close();
        }
    }

【讨论】:

    猜你喜欢
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多