搜索
查看: 2189|回复: 9

【求助】关于cs成绩排行榜的问题

[复制链接]
发表于 2006-7-3 23:04:36 | 显示全部楼层 |阅读模式 来自 中国–浙江–杭州
我应大家的要求把cs服务器的成绩发到网上,便于查询,这点已经没问题了,但要把1号服务器和2号服务器的成绩合并,难度很大啊,主要是大家服务器中的ID都乱取名的,什么特殊符号都有,有些与程序命令冲突啊,谁能解决,我这里深表感谢。

我先有70000多条数据啊,转了300多条出错了,谁有办法啊,源代码如下

<!--#include file="conn.asp"-->
<%
dim tablename,x,i,rs,rs1,rs2,sql,rsSchema

set rsSchema=Conn.openSchema(20)
rsSchema.movefirst
tablename="s"
x=0
Do Until rsSchema.EOF
   if rsSchema("TABLE_TYPE")="TABLE" then
    if  rsSchema("TABLE_NAME")=tablename then
        x=1
        exit do
    end if
   end if
   rsSchema.movenext
Loop
if x=0 then response.write"没有找到总排行表!"
if x=1 then response.write"找到了总排行表!"
conn.close
set Conn=nothing

if x=1 then
sql="drop table s"
Set RS = Conn.Execute(SQL)
'rs.close
set rs=nothing
response.write"已经删除了总排行表!"
response.write"正在重建总排行表!"
end if


  '创建表
  sql= "CREATE TABLE s (id autoincrement(1,1) PRIMARY KEY NOT NULL, name char (50) NOT NULL,kills number ,deaths number ,shots number ,hits number ,hs number ,damage number)"
  
  set rs=conn.execute (sql)
  'rs.close
  set rs=nothing
  '显示创建成功信息。
  Response.Write "总排行榜表创建成功!"


Response.Write "正在进行1号服务器数据库合并,请稍后……"
i=1
do while i<100000
set rs1=server.CreateObject("Adodb.recordset")
rs1.Open "select * from s1 where id="&i,conn,1,3
  if rs1.EOF  then
  exit do
  end if
  set rs=server.CreateObject("Adodb.recordset")
  rs.Open "select * from s where name='"&rs1("name")&"'",conn,1,3
  if not rs.eof then
  rs("kills")=rs("kills")+rs1("kills")
  rs("deaths")=rs("deaths")+rs1("deaths")
  rs("shots")=rs("shots")+rs1("shots")
  rs("hits")=rs("hits")+rs1("hits")
  rs("hs")=rs("hs")+rs1("hs")
  rs("damage")=rs("damage")+rs1("damage")
  rs("eff")=rs("kills")/(rs("kills")+rs("deaths"))*100
  rs("acc")=rs("hits")/rs("shots")*100
  rs.update
  rs.close
  set rs=nothing
  else
  set rs=server.CreateObject("Adodb.recordset")
  rs.open "s",conn,1,3
  rs.addnew
  rs("kills")=rs1("kills")
  rs("deaths")=rs1("deaths")
  rs("shots")=rs1("shots")
  rs("hits")=rs1("hits")
  rs("hs")=rs1("hs")
  rs("damage")=rs1("damage")
  rs("eff")=rs("kills")/(rs("kills")+rs("deaths"))*100
  rs("acc")=rs("hits")/rs("shots")*100
  rs.update
  rs.close
  set rs=nothing
  end if
rs1.movenext
i=i+1
loop
rs1.close
set rs1=nothing
Response.Write "1号服务器数据库合并成功!"

Response.Write "正在进行2号服务器数据库合并,请稍后……"
i=1
do while i<100000
set rs1=server.CreateObject("Adodb.recordset")
rs1.Open "select * from s2 where id="&i,conn,1,3
  if rs1.EOF  then
  exit do
  end if
  set rs=server.CreateObject("Adodb.recordset")
  rs.Open "select * from s where name='"&rs1("name")&"'",conn,1,3
  if not rs.eof then
  rs("kills")=rs("kills")+rs1("kills")
  rs("deaths")=rs("deaths")+rs1("deaths")
  rs("shots")=rs("shots")+rs1("shots")
  rs("hits")=rs("hits")+rs1("hits")
  rs("hs")=rs("hs")+rs1("hs")
  rs("damage")=rs("damage")+rs1("damage")
  rs("eff")=rs("kills")/(rs("kills")+rs("deaths"))*100
  rs("acc")=rs("hits")/rs("shots")*100
  rs.update
  rs.close
  set rs=nothing
  else
  set rs=server.CreateObject("Adodb.recordset")
  rs.open "s",conn,1,3
  rs.addnew
  rs("kills")=rs1("kills")
  rs("deaths")=rs1("deaths")
  rs("shots")=rs1("shots")
  rs("hits")=rs1("hits")
  rs("hs")=rs1("hs")
  rs("damage")=rs1("damage")
  rs("eff")=rs("kills")/(rs("kills")+rs("deaths"))*100
  rs("acc")=rs("hits")/rs("shots")*100
  rs.update
  rs.close
  set rs=nothing
  end if
rs1.movenext
i=i+1
loop
rs1.close
set rs1=nothing
Response.Write "2号服务器数据库合并成功!"
%>
我已经改进了程序,现在能导到3890条记录,错误代码如下:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'name='K41;;;;;’’’’'````~'' 中。

就是这个鸟人啊K41;;;;;’’’’'````~,名字这么古怪,他用的都是asp里的不能使用的特殊符号啊,mmd,还全角半角符号都用上了,谁有办法解决啊
 楼主| 发表于 2006-7-3 23:06:35 | 显示全部楼层 来自 中国–浙江–杭州

回复: 关于cs成绩排行榜的问题

现在我把

rs.Open "select * from s where name='"&rs1("name")&"'",conn,1,3
改成

rs.Open "select * from s where name='"&CStr(rs1("name"))&"'",conn,1,3

能够成功导入一些比如ka'ka'这种名字,头上有个’啊,这是asp中不能乱用的符号啊,但是那个K41;;;;;’’’’'````~还不行啊,谁有办法啊
回复

使用道具 举报

 楼主| 发表于 2006-7-3 23:08:23 | 显示全部楼层 来自 中国–浙江–杭州

回复: 关于cs成绩排行榜的问题

希望能看到,有好心人相助,
我先给你们下跪了………………
回复

使用道具 举报

发表于 2006-7-4 00:41:15 | 显示全部楼层 来自 中国–广东–广州–天河区

回复: 关于cs成绩排行榜的问题

Post by 002001000
现在我把

rs.Open "select * from s where name='"&rs1("name")&"'",conn,1,3
改成

rs.Open "select * from s where name='"&CStr(rs1("name"))&"'",conn,1,3

能够成功导入一些比如ka'ka'这种名字,头上有个’啊,这是asp中不能乱用的符号啊,但是那个K41;;;;;’’’’'````~还不行啊,谁...



Names=[color="Blue"]replace(rs1("name"),"[color="red"]'","[color="Red"]''")
rs.Open "select * from s where name='"& Names &[color="Blue"]"',conn,1,3
回复

使用道具 举报

 楼主| 发表于 2006-7-4 08:13:43 | 显示全部楼层 来自 中国–浙江–杭州

回复: 关于cs成绩排行榜的问题

太谢谢了,不知道说什么好~~~~~你太好了…………
回复

使用道具 举报

发表于 2006-7-4 09:00:21 | 显示全部楼层 来自 中国–广东–深圳–南山区

回复: 关于cs成绩排行榜的问题

Post by 002001000
太谢谢了,不知道说什么好~~~~~你太好了…………

你的网页排名有他的漂亮吗。:cool:
回复

使用道具 举报

发表于 2006-7-4 13:26:23 | 显示全部楼层 来自 中国–广东–湛江

回复: 关于cs成绩排行榜的问题

Post by yanexp
Names=[color="Blue"]replace(rs1("name"),"[color="red"]'","[color="Red"]''")
rs.Open "select * from s where name='"& Names &[color="Blue"]"',conn,1,3



这样已经改了人家的ID的,可以用HTMLCode来将引号等等修改
回复

使用道具 举报

 楼主| 发表于 2006-7-4 16:16:42 | 显示全部楼层 来自 中国–浙江–杭州

回复: 关于cs成绩排行榜的问题

太谢谢各位了,谢谢大家的帮助!!
回复

使用道具 举报

发表于 2006-7-4 16:48:07 | 显示全部楼层 来自 中国–广东–广州–天河区

回复: 关于cs成绩排行榜的问题

Post by rachis
这样已经改了人家的ID的,可以用HTMLCode来将引号等等修改



实际上并不会改变原名,Vbscrit对边界符就是要这样处理。
回复

使用道具 举报

发表于 2006-7-8 16:58:51 | 显示全部楼层 来自 中国–天津–天津

回复: 【求助】关于cs成绩排行榜的问题

高手阿
搞不懂ASP
还是搞个现成的Psychostats好
我看Yanexp的排名系统里显示Hitbox的的Flash就是借用Psychostats的吧
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表