<%
Function getNumByDWID(id,opt)
'Set mRs = Server.CreateObject("ADODB.Recordset")
Text="select count(options) as num from inform where options like '%" +cstr(id)+","+opt+ "%'" set mRs=myConn.execute(text)
j=mRs("num")
getNumByDWID=j
mRs.close
set mRs=nothingEnd Function Set Rs = Server.CreateObject("ADODB.Recordset")
Textsql="select * from danwei"
Rs.Open Textsql,myConn,1,1
i=0
Temp = ""
Temp = Temp + "<table cellSpacing='1' cellPadding='0' style='' class='table' align='center'>"
Temp = Temp + "<tr class='trTitle'>"
Temp = Temp + "<td class='tdTitle' colspan='5' align='center'>***民主评议</td>"
Temp = Temp + "</tr>"
Temp = Temp + "<tr class='trTitle'>"
Temp = Temp + "<td class='tdTitle'>序号</td>"
Temp = Temp + "<td class='tdTitle'>单位</td>"
Temp = Temp + "<td class='tdTitle'>满意</td>"
Temp = Temp + "<td class='tdTitle'>基本满意</td>"
Temp = Temp + "<td class='tdTitle'>不满意</td>"
Temp = Temp + "</tr>" while not rs.eof
i=i+1
Temp = Temp + "<tr class='tr'>"
Temp = Temp + "<td class='td'>"+cstr(i)+"</td>"
Temp = Temp + "<td class='td'>"+rs("danwei")+"</td>"
Temp = Temp + "<td class='td'>"+cstr(getNumByDWID(rs("id"),"a"))+"</td>"
Temp = Temp + "<td class='td'>"+cstr(getNumByDWID(rs("id"),"b"))+"</td>"
Temp = Temp + "<td class='td'>"+cstr(getNumByDWID(rs("id"),"c"))+"</td>"
Temp = Temp + "</tr>"
'添加新数据到piaoshu表中
set Rs2=server.CreateObject("adodb.recordset")
sql="select * from piaoshu"
Rs2.open sql,myConn,1,3
Rs2.addnew
Rs2("id")=cint(cstr(i))
Rs2("danwei")=rs("danwei")
Rs2("piaoshu")=cint(cstr(getNumByDWID(cstr(rs("id")),"a")))
Rs2("aaa")=cint(cstr(getNumByDWID(cstr(rs("id")),"a")))
Rs2("bbb")=cint(cstr(getNumByDWID(cstr(rs("id")),"b")))
Rs2("ccc")=cint(cstr(getNumByDWID(cstr(rs("id")),"c")))
Rs2.update
Rs2.close
set Rs2=nothing
rs.movenext
wend
rs.close
set rs=nothing
myConn.close
set myConn=nothing
Temp = Temp + "</table>"
response.write Temp
response.Write("报告,新数据已经更新到piaoshu表中,你可以通过Tablepiaoshu表来查询票数最高的单位")
%>
各位同志好,大家帮忙看下上面的程序,我这个程序想实现的功能是统计各个单位的票数,存储的方式是单位序号+“,”+满意度(满意用A,一般用B,不满意用C),132个单位都存在options字段里,(1,a|2,a|3,c|4,a),可现在的问题是,在模糊查询时,统计序号为4的单位时,他会把14,24,34,54都统计上,请问这个怎么改呀,谢谢

解决方案 »

  1.   

    Text="select   count(options)   as   num   from   inform   where   '|'+options+'|'   like   '%|"   +cstr(id)+","+opt+   "|%'"
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  2.   

    你说有132个单位,以后会增加吗?
    你的意思输入4后出现的是那些?
    是 4,41,42,43,……,
    不要14,24,34
    是吗?
    没有意义。
    不如直接一个一个查了,不用模糊查询 。
    Text="select   count(options)   as   num   from   inform   where   options   =cstr(id)" 
      

  3.   

    三楼的代码不完善
    这样肯定取不到第一和最后一条记录
    改进一下
    Text="select count(options) as num from inform where ('¦'+options+'¦' like '%¦" +cstr(id)+","+opt+"¦%'") or (options+'¦' like '" +cstr(id)+","+opt+"¦%'") or ('¦'+options like '%¦" +cstr(id)+","+opt+"'")这样做真是给自己找麻烦~~
      

  4.   

    我这单位一固定后就不再添加我是刚从学校出来的,当初设计的时候没想的很多,所以现在这样呀,现在我数据库中存储的数据统计字段options是(1,a ¦2,a ¦3,c ¦4,a……,)这样的,所以现在我要是想统计各个单位具体票数只能通过统计options,并根据相应单位的ID然后加上了个函数这样来呀,呵呵,麻烦大家再说说还有八楼的大哥,我用你的代码报错呢,说字符串没有结束,还有你这代码我看不懂呀,呵呵,能给我讲讲吗,谢谢大家热心的发言
      

  5.   

    Text="select count(options) as num from inform where options="&cstr(id)&" and options like '%" +cstr(id)+","+opt+ "%'"   如果这样写就说格式错误
      

  6.   

    Microsoft JET Database Engine 错误 '80040e07' 标准表达式中数据类型不匹配。 /datong/admin/chakan2.asp,行 611 
    Text="select count(options) as num from inform where options="&cstr(id)&" and options like '%" +cstr(id)+","+opt+ "%'"
    set mRs=myConn.execute(text)
      

  7.   

    各位帮忙看看啦我现在把代码改成这样了,可以正常运行,但统计的数字还是不完全正确啊Text="select count(options) as num from inform where (options like '%"+"|" +cstr(id)+","+opt+"|" +"%') or (options like '%" +cstr(id)+","+opt+"|" +"%') or (options like '%"+"|" +cstr(id)+","+opt+"%')"