|
我应大家的要求把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,还全角半角符号都用上了,谁有办法解决啊 |
|