string starTime = txtBeginTime.Text;
        string endTme = txtEndTime.Text;
        DateTime sTime = DateTime.MinValue;
        DateTime eTime = DateTime.MinValue;
        DateTime.TryParse(starTime, out sTime);
        DateTime.TryParse(endTme, out eTime);
        if (sTime != DateTime.MinValue && eTime != DateTime.MinValue && eTime > sTime)
        {
            strSel += " and date between " + sTime.ToString() + " and " + eTime.ToString();
        }
        else if (sTime != DateTime.MinValue)
        {
            strSel += " and date > " + sTime.ToString();
        }
        else if (eTime != DateTime.MinValue)
        {
            strSel += " and date <" + eTime.ToString();
        }
        SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel, MyConn);
           
        DataSet ds = new DataSet();
        MyAdapter.Fill(ds, "T_WAGE");//错误在这里。显示关键字 'and' 附近有语法错误。
        Report.SetDataSource(ds);

解决方案 »

  1.   

    strSel 里面有 where 吗?
      

  2.   

    没啊。。我就SQL语句这里不太懂。。试了好多种方法都没用。。
      

  3.   

     string strSel = "Select * from [T_WAGE] where MONTH >= 's1' and MONTH<='s2'";
    我的数据库中的字段是DATETIME的。然后S2和S2我也转了。
    s1 = Convert.ToDateTime(txtBeginTime.Text);
    s2 = Convert.ToDateTime(txtEndTime.Text);
    为什么不可以呢、?
      

  4.   

    运行起来,跟踪一下代码
    执行到MyAdapter.Fill(ds, "T_WAGE");行的时候,停止
    通过VS调试窗口直接可以从适配器对象看到sql语句,拷贝到sql查询分析器中一看便知了你的错误无非就是缺少where 或者是第一个或第二个if没有成立造成的
      

  5.   

    我单步运行到这里if (sTime != DateTime.MinValue && eTime != DateTime.MinValue && eTime > sTime)
      {
      strSel += " and date between " + sTime.ToString() + " and " + eTime.ToString();
      }
    然后成立跳到
    SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel, MyConn);
    接着就出现我所说的错误了。。我很不明白。之前我也查了一个类似的帖子,上面的方法我也试了。。都是一样的错误
      

  6.   

    BETWEEN 操作符
    操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。SQL BETWEEN 语法
    SELECT column_name(s)
    FROM table_name
    WHERE column_name
    BETWEEN value1 AND value2SELECT * FROM Persons
    WHERE LastName
    BETWEEN 'Adams' AND 'Carter'SELECT * FROM Persons
    WHERE LastName
    NOT BETWEEN 'Adams' AND 'Carter'常用SQL语句
      

  7.   

    我现在又从新使用下面的代码。
            DateTime s1, s2;
            s1 = Convert.ToDateTime(txtBeginTime.Text);
            s2 = Convert.ToDateTime(txtEndTime.Text);        Report = new ReportDocument();
            Report.Load(Server.MapPath("RptPush.rpt"));
            string strProvider = "Data Source=.;Initial Catalog=WagMan;Integrated Security=True";
            SqlConnection MyConn = new SqlConnection(strProvider);
            MyConn.Open();        string strSel = "Select * from [T_WAGE] where MONTH) between  s1 and s2";
          
            SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel, MyConn);
                  DataSet ds = new DataSet();
            MyAdapter.Fill(ds, "T_WAGE");
            Report.SetDataSource(ds);
           // MyAdapter.Update(ds, "T_WAGE");        CrystalReportViewer1.ReportSource = Report;
            MyConn.Close();
    他有显示的错误时:::在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式求各位大神帮帮忙。毕业设计没几天就要交了。。
      

  8.   

    sql语句 加在where后面 startDate>='value'  and endDate<='value'
      

  9.   

    您说的是这个吗?string strSel = "Select * from [T_WAGE] where MONTH >='s1'and MONTH <='s2'";
    他显示的错误是从字符串向 datetime 转换时失败。
      

  10.   

      strSel += " and date between '" + sTime.ToString() + "' and '" + eTime.ToString()+"'";用字符串拼接时在加单引号,,strsel='2011-04-20';
      

  11.   

    strSel += " and date between " + sTime.ToString() + " and " + eTime.ToString();
    改为
    strSel += " and date between '" + sTime.ToString() + "' and '" + eTime.ToString()+"'";
    string strSel = "Select * from [T_WAGE] where MONTH >='s1'and MONTH <='s2'";
    改为
    string strSel = "Select * from [T_WAGE] where MONTH >='"+s1+"'and MONTH <='"+s2+"'";
      

  12.   

    这当然错了,你用的是S1和S2字符,不是S1和S2变量的值。DateTime s1, s2;
      s1 = Convert.ToDateTime(txtBeginTime.Text);
      s2 = Convert.ToDateTime(txtEndTime.Text);  Report = new ReportDocument();
      Report.Load(Server.MapPath("RptPush.rpt"));
      string strProvider = "Data Source=.;Initial Catalog=WagMan;Integrated Security=True";
      SqlConnection MyConn = new SqlConnection(strProvider);
      MyConn.Open();  string strSel = "Select * from [T_WAGE] where MONTH) between '"+s1+"' and '"+s2+"'";