如果月份不同,Datagridview中的过滤日期范围不起作用

时间:2017-06-12 03:00:03

标签: c# winforms date datagridview

我知道这是一个老问题,但我仍然有点困惑,请告诉我如何。

我在datagridview中加载了一个带有条件的数据表,就像下面的代码一样,事情是,当FromDateToDate是相同月份时,它运行良好。不同的月份使datagridview为空。

FromDateToDate在日历中被选中到2个文本框中。

private void LoadWorkRequestSearch()
{
    DateTime datefrom = Convert.ToDateTime(textdatefrom.Text.Trim());
    DateTime dateto = Convert.ToDateTime(textdateto.Text.Trim());

    string sql = "";
    sql = "Select DateCreated, ri.RequestID, RequesterID, RequestStatus, RequestDetail, SentTo, EstimateCompleteDate, ru.StartedDate, ru.ProcessTime From [RequestInfo] ri ";
    sql = sql + " LEFT JOIN [StatusRequest] sr ON sr.RequestStatusID = ri.Status";
    sql = sql + " LEFT JOIN [RequestUsers] ru ON ru.RequestID = ri.RequestID ";
    sql = sql + " Where DateCreated between '" + datefrom.ToShortDateString() + "' and '" + dateto.ToShortDateString() + "'";

    _dtworkrequestsearch = _cls_DB.QueryDataTable(sql);
    G1.DataSource = _dtworkrequestsearch;

}

我尝试了所有搜索过的内容,但它没有按我想要的方式工作,请帮忙。

谢谢,

1 个答案:

答案 0 :(得分:1)

使用日历控件并强制执行日期格式。

从TextBox转换到日期是可能的问题,例如dd / MM到MM / dd

修改

您正在使用varchar(10)字段作为日期。这不允许SQL BETWEENS,因为它是一个不是基于数字/日期的文本字段,因此它执行字母数字搜索。

使用DateDreated的SmallDateTime列来获得所需的结果。