none
模糊查询日期问题 急。。。。。。。。。。。。。。。。。。 RRS feed

  • 问题

  • 查询日期,如2010-3-10至2010-3-11

    下面贴出代码,如何修改谢谢。

      public void Dategriv()
        {
            SqlConnection sqlcon = new SqlConnection(WebConfigurationManager.ConnectionStrings["strCon"].ConnectionString);
            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.Connection = sqlcon;
            string sql = "select * from between @time and @time1 items where 1=1    ";
            sqlcmd.CommandText = sql;

            if (txtEtime.Text != string.Empty)
            {
                sqlcmd.CommandText += " and Convert(datetime,time,23)>=@time";

                sqlcmd.Parameters.Add(new SqlParameter("@time", txtEtime.Text));
            }


            if (txtEtime.Text != string.Empty)
            {
                sqlcmd.CommandText += " and Convert(datetime,time,23)<=@time1";

                sqlcmd.Parameters.Add(new SqlParameter("@time1", txtEtime.Text));
            }

     

            if (TextBox3.Text != string.Empty)
            {
                sqlcmd.CommandText += " and xiangmu like '%'+@xiangmu+'%'";
                sqlcmd.Parameters.Add(new SqlParameter("@xiangmu", TextBox3.Text));
            }
            SqlDataAdapter sqldar = new SqlDataAdapter(sqlcmd);
            DataSet ds = new DataSet();
            sqldar.Fill(ds, "items");
            this.GridView1.DataSource = ds.Tables[0];
            this.GridView1.DataBind();

        }

    2010年3月11日 7:11

答案

  • 语句是没有问题的,传入的日期是否正确?这段日期内是否有数据?你的 time, time1 的字段类型是否是时间类型?
    知识改变命运,奋斗成就人生!
    • 已标记为答案 Lennon.lu 2010年3月11日 8:47
    2010年3月11日 8:10
    版主

全部回复

  •     public void Dategriv()
        {
            // 要先验证查询参数
            
            string sql =
    @"SELECT * FROM [YourTable]
        WHERE (@BeginDate = '' OR  YourDateTimeField >= @BeginDate)
          AND (@EndDate = '' OR  YourDateTimeField <= @EndDate)
          AND (@xiangmu = '' OR  xiangmu LIKE '%' + @xiangmu + '%');";
    
            using (SqlDataAdapter ta = new SqlDataAdapter(sql, WebConfigurationManager.ConnectionStrings["strCon"].ConnectionString))
            {
    
                ta.SelectCommand.Parameters.AddWithValue(@BeginDate, txtBeginDate.Text);
                ta.SelectCommand.Parameters.AddWithValue(EndDate, txtEndDate.Text);
                ta.SelectCommand.Parameters.AddWithValue(xiangmu, TextBox3.Text);
    
                DataSet ds = new DataSet();
                sqldar.Fill(ds, "items");
                this.GridView1.DataSource = ds.Tables[0];
                this.GridView1.DataBind();
            }
        }


    知识改变命运,奋斗成就人生!
    2010年3月11日 7:35
    版主
  • 补充一下

    1:你的 SQL 有语法问题
    2:返回 DataTable 直接声明 SqlDataAdapter 就行了,不需要再单独声明 Connection 和 Command。
    3:查询或提交数据前需要验证参数是否符合要求。

    知识改变命运,奋斗成就人生!
    2010年3月11日 7:43
    版主
  • 查时间没反应,都是空。查询xiangmu 正常。

        public void Dategriv()
        {
            // 要先验证查询参数

            string sql =
    @"SELECT * FROM [items ]
        WHERE (@BeginDate  = '' OR  time >= @BeginDate)
          AND (@EndDate  = '' OR  time1 <= @EndDate)
          AND (@xiangmu = '' OR  xiangmu LIKE '%' + @xiangmu + '%');";

            using (SqlDataAdapter ta = new SqlDataAdapter(sql, WebConfigurationManager.ConnectionStrings["strCon"].ConnectionString))
            {

                ta.SelectCommand.Parameters.AddWithValue("@BeginDate", txtEtime.Text);
                ta.SelectCommand.Parameters.AddWithValue("@EndDate", txtEtime.Text);
                ta.SelectCommand.Parameters.AddWithValue("@xiangmu", TextBox3.Text);

                DataSet ds = new DataSet();
                ta.Fill(ds, "items");
                this.GridView1.DataSource = ds.Tables[0];
                this.GridView1.DataBind();
            }
        }

    2010年3月11日 7:49
  • 语句是没有问题的,传入的日期是否正确?这段日期内是否有数据?你的 time, time1 的字段类型是否是时间类型?
    知识改变命运,奋斗成就人生!
    • 已标记为答案 Lennon.lu 2010年3月11日 8:47
    2010年3月11日 8:10
    版主
  • 语句是没有问题的,传入的日期是否正确?这段日期内是否有数据?你的 time, time1 的字段类型是否是时间类型?
    知识改变命运,奋斗成就人生!

    是的。类型是datetime。传入的格式是2010-03-11
     
    我MSN lennon.lu@Hotmail.com   可以的话,把程序发你看下
    2010年3月11日 8:14