使用Expression从数据集中获取记录

时间:2012-01-23 06:55:17

标签: c# .net dataset

我想使用一些表达式从数据集中获取记录..!

这是我的数据集enter image description here

这是我的数据集我希望根据punchDate在两个日期之间获得回复。

示例:我希望获取03-01-201225-01-2012之间的记录,这意味着它会返回正确的记录。

假设我只是将03-12-2011之类的日期输入到25-01-2012表示它会返回错误。

  

错误:源不包含DataRows;

我在此处附上我的代码:

protected void findbyexpression(string Expression)
{
    try
    {
        DataTable dt1 = new DataTable();
        DataSet4TableAdapters.sp_getalltimesheetTableAdapter TA = new DataSet4TableAdapters.sp_getalltimesheetTableAdapter();
        DataSet4.sp_getalltimesheetDataTable DS = TA.GetData();
        DataTable DT = new DataTable();
        DT = DS[0].Table;
        DataRow[] foundRows;
        foundRows = DT.Select(Expression);
        if (DT.Rows.Count == 0)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>alert('No records found for request query');</script>", false);
        }
        else
        {
            panheader.Visible = true;
            dt1 = foundRows.CopyToDataTable();
            Session["TaskTable"] = dt1;
            grdvw.DataSource = Session["TaskTable"];
            grdvw.DataBind();
        }
    }
    catch (Exception e2)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "temp", "<script language='javascript'>alert('" + e2.Message + "');</script>", false);
    }
}

和表达式是:

 string expression = "PunchDate >= '" + txtfromdate.Text + "' and PunchDate <= '" + txttodate.Text + "'";
            findbyexpression(expression);

请帮我拿到记录..

2 个答案:

答案 0 :(得分:0)

  1. dataview = dataset.Tables [Table_Name] .DefaultView;
  2. dataview.RowFilter =“DATE&gt; ='”+ startDate.ToShortDateString()+“'和DATE&lt; ='”+ endDate.ToShortDateString()+“'”;
  3. dataGridView1.DataSource = dataview;

答案 1 :(得分:0)

您的查询未正确选择记录。您可以查看此链接以选择范围Select date b/w ranges之间的日期。并使用这个条件。

 string expression = PunchDate < YourEndDate AND PunchDate  >= your StartDate.
  • 您的查询可以是Sql Injected,尝试使用参数化查询。 Parameterized query.
  • 如果可能,请尝试将所有变量重命名为某个有意义的名称。