string sSQL="SELECT MAX(PlanPeriod) as iMax FROM tIndRq";
SqlDataAdapter dapMax = new SqlDataAdapter(sSQL, cnn);
DataTable dtMax = new DataTable();
dapMax.Fill(dtMax);
string sMax = dtMax.Rows[0]["iMax"].ToString();
int n = string.CompareOrdinal(sMax, start);
if (n<0)
{
ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('计划区间起始值过大!"+"\\n"+"当前最大周是:" + sMax + "周');</script>");
return;
}
这里获得的是最大值,因此只有一条记录。
1、string sMax = dtMax.Rows[0]["iMax"].ToString();
Rows[0]["iMax"]:第一行的iMax字段。
2、int n = string.CompareOrdinal(sMax, start);比较2个日期的大小。
3、"<script>alert('计划区间起始值过大!"+"\\n"+"当前最大周是:" + sMax + "周');</script>"
\\n就是换行符咯。
注意!就是因为这句:string sSQL="SELECT MAX(PlanPeriod) as iMax FROM tIndRq",这里的max(字段名),让dataTable.Rows.Count==0始终不成立!为什么呢?明明查出的数据是空的,一条都没有,但是dataTable.Rows.Count=1呢?网上一顿狂搜,发现这个:http://hi.baidu.com/maj0123/blog/item/e2f213a4594b4fe39152ee51.html。大意是加了聚合函数max之后,“即使没有查询到任何数据,table也会有一条为空的记录。”那么使用if(dataTable.Rows.Count-1==0)也是不行的了。
只有判断第一条记录是否为空了。if(string.IsNullOrEmpty(dtMax.Rows[0][0].ToString()))