导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

紧急求助!!!!解决后马上加分!!

a26629156 2008-01-12 01:34:01
本人写转生储存部分的时候遇到个问题,让我实在头疼。好了说主题:

rs.close
rs.open "select * from CHAR_POWER,CHAR_ACCOUNT where wLevel>=99 and szAccount='" & id & "'",conn1,1,1
if rs.eof then
response.write "<script>alert('你的等级不到99!');history.back(-1)</script>"
response.end
end if

上面这部分为数据查找,红色字体部分,CHAR_POWER,CHAR_ACCOUNT这是分别的两个表联合到一起的。

conn1.Execute "update CHAR_POWER set CHAR_POWER.wLevel=1,wStr=1,wSus=1,wDex=1,dwExp=0,wRemainSp=(wRemainSp+1) + 100 from CHAR_POWER,CHAR_BASIC where CHAR_POWER.dwCharID=CHAR_BASIC.dwCharID and szNickName='"&char&"'"

通过这部分可以实现人物转生,成功的使一个人物转生,转生后级别为1级属性点奖励101点,但是关键问题来了,当一个人物转生完毕后应该是1级别,但是只要数据库里还有99级的人物那么这个人物还可以继续转生,即使级别是1级。我被搞的晕头转向的。希望高人指点。另外存储语句红色字体部分CHAR_POWERCHAR_BASIC是两个表联合到一起的。但是我个人认为问题不应该在存储过程上吧,好象应该在级别筛选方面,但是想了半天还是没懂,希望高人指点,谢谢了。另外重要部分要说的是3个表的关联字段是dwCharID,具体希望高人帮忙写出来。谢谢了。
...全文
50 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2008-01-12
程序获取就行...

建议楼主用两个存储过程实现;
1个 select ,1个 update
方便以后的维护

回复
中国风 2008-01-12
用05判断方法:


存储过程:
begin tran
begin try
.....语名
if 判断。。
raiserror 50002'#'

end try
begin catch
raiserror 50002'级别不足'--或用select
rollback
end catch
if @@truncount>0
commit tran
回复
parss 2008-01-12

那楼主得说明白了,倒底是要实现什么样的结果。
回复
月下之木 2008-01-12
楼上的 他的意思可能是 有一个人提交转生 那条语句就是把那个人是不是99级判断出来 如果rs.eof
那么这个人估计就还没到99 所以弹出对话框
回复
parss 2008-01-12

首先你的查询那里就有问题
rs.close
rs.open "select * from CHAR_POWER,CHAR_ACCOUNT where wLevel> =99 and szAccount='" & id & "'",conn1,1,1
if rs.eof then
response.write " <script> alert('你的等级不到99!');history.back(-1) </script> "
response.end
end if


既然wLevel> =99 为什么还alert('你的等级不到99!'),你的这个条件是查出所有比98级大的
应该wLevel<99

回复
月下之木 2008-01-12
select * from CHAR_POWER left join CHAR_ACCOUNT on CHAR_POWER.dwCharID=CHAR_ACCOUNT.dwCharID where wLevel> =99 and szAccount=...
回复
pt1314917 2008-01-12
这位兄弟好象发了无数帖子。
可大家好象还是没有清楚你要表达的意思。
回复
月下之木 2008-01-12
用错联结了 用左外 交叉连接 每个99记得人都会和所有99记得id 生成一行
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告