new_rank 则是@rank这个变量生成的。
逻辑是根据@rank:=reporter_id是否跟上次相同,如果跟上次不同则执行 @rank:=1这个赋值中导致@rank等于1。然后相同执行@rank:=@rank+1。reporter_id出现4次@rank大于3后不显示。
图1执行的时候没定义类型,所以@tmp还存在最后一行查询的值并且字段类型变成了字符串。导致if条件判断为“非”,无脑触发 @rank:=1导致全部值都等于1
图2是正常的。
like和not都是运算符,两者不得混在一起使用,情况就跟一同时乘以除以二(1 * / 2)一样,系统搞不清楚该如何运算它。建议修改SQL查询语句如下:
Select Count(*) as cnts From table1 Where InStr(Comment,'$')=0 or IsNull(InStr(Comment,'$'))
从你的说明来看,数据肯定是没问题的了,而设置也不会造成这种情况,所以我猜有可能是程序的问题了。adapter的Fill方法默认是将读取到的新数据【添加】到你指定的DataSet里,所以如果你对比测试两个数据库时写成了这样:
OleDbDataAdapter dp = new OleDbDataAdapter("select id from sys ",conn)
dp.Fill(dt)
foreach (DataRow dr in dt.Rows)
{
MakeTree(dr["id"].ToString())//一个自定义的函数
}
OleDbDataAdapter dp = new OleDbDataAdapter("select id from sys ",conn2)
dp.Fill(dt)
foreach (DataRow dr in dt.Rows)
{
MakeTree(dr["id"].ToString())//一个自定义的函数
}
那dt中就一定会是1212,因为你连续Fill了两次。要避免这种情况应该在Fill前写入dt.Clear()
以上是猜测,如果不是这个原因,请QQ或者百度信箱联系我详细描述下好让我帮你解决问题。
QQ176229432 周1~5上班时间在线
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)