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);
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);
我的数据库中的字段是DATETIME的。然后S2和S2我也转了。
s1 = Convert.ToDateTime(txtBeginTime.Text);
s2 = Convert.ToDateTime(txtEndTime.Text);
为什么不可以呢、?
执行到MyAdapter.Fill(ds, "T_WAGE");行的时候,停止
通过VS调试窗口直接可以从适配器对象看到sql语句,拷贝到sql查询分析器中一看便知了你的错误无非就是缺少where 或者是第一个或第二个if没有成立造成的
{
strSel += " and date between " + sTime.ToString() + " and " + eTime.ToString();
}
然后成立跳到
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel, MyConn);
接着就出现我所说的错误了。。我很不明白。之前我也查了一个类似的帖子,上面的方法我也试了。。都是一样的错误
操作符 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语句
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();
他有显示的错误时:::在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式求各位大神帮帮忙。毕业设计没几天就要交了。。
他显示的错误是从字符串向 datetime 转换时失败。
改为
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+"'";
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+"'";