【求助】关于cs成绩排行榜的问题
我应大家的要求把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
ifrsSchema("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.EOFthen
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.EOFthen
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)
语法错误 (操作符丢失) 在查询表达式 'name='K41;;;;;’’’’'````~'' 中。
就是这个鸟人啊K41;;;;;’’’’'````~,名字这么古怪,他用的都是asp里的不能使用的特殊符号啊,mmd,还全角半角符号都用上了,谁有办法解决啊
回复: 关于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;;;;;’’’’'````~还不行啊,谁有办法啊
回复: 关于cs成绩排行榜的问题
希望能看到,有好心人相助,我先给你们下跪了………………
回复: 关于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=replace(rs1("name"),"'","''")
rs.Open "select * from s where name='"& Names &"',conn,1,3
回复: 关于cs成绩排行榜的问题
太谢谢了,不知道说什么好~~~~~你太好了…………回复: 关于cs成绩排行榜的问题
Post by 002001000太谢谢了,不知道说什么好~~~~~你太好了…………
你的网页排名有他的漂亮吗。:cool:
回复: 关于cs成绩排行榜的问题
Post by yanexpNames=replace(rs1("name"),"'","''")
rs.Open "select * from s where name='"& Names &"',conn,1,3
这样已经改了人家的ID的,可以用HTMLCode来将引号等等修改
回复: 关于cs成绩排行榜的问题
太谢谢各位了,谢谢大家的帮助!!回复: 关于cs成绩排行榜的问题
Post by rachis这样已经改了人家的ID的,可以用HTMLCode来将引号等等修改
实际上并不会改变原名,Vbscrit对边界符就是要这样处理。
回复: 【求助】关于cs成绩排行榜的问题
高手阿搞不懂ASP
还是搞个现成的Psychostats好
我看Yanexp的排名系统里显示Hitbox的的Flash就是借用Psychostats的吧
页:
[1]