求救!向高手求救!关于循环显示的问题

leekeeny 2009-08-24 01:15:49
首先把代码POST出来先:
<%
strConnection = "dsn=mysql;driver={myodbddriver};server=localhost;uid=root;pwd=;database=proto_management_test"
Set myconn = Server.CreateObject("ADODB.Connection")
myconn.Open strConnection
dim counter
counter = 0

projid = recordset1.fields.item("project_id")
sql1 = "select proto_id from project_m where project_id = '"&projid&"'"
set rs1 = server.CreateObject("adodb.recordset")
set rs1 = myconn.execute(sql1)
id = rs1("proto_id")
sql = "select proto_name from proto_info where proto_id = '"&rs1("proto_id")&"'"
set rs = server.CreateObject("adodb.recordset")
set rs = myconn.execute(sql)
if rs.eof then
response.write "没有对应的产品名"
else
While (counter < rs1.recordcount)
response.Write(Recordset1.Fields.Item("proto_id").Value)&","
response.Write rs("proto_name")
counter = counter + 1
'recordset1.movenext
rs.movenext
rs1.movenext
wend
end if
rs1.close:set rs1 = nothing
rs.close:set rs = nothing
myconn.close:set myconn = nothing
%>
我有一个recordset1的记录集
里面只有一个project_id的字段select 在一个project_m的表中。project_m里面有project_id,proto_id,manager_id字段
我现在想把rs1里符合recordset1的project_id的proto_id找出来与我这个rs的proto_info的proto_id匹配找出proto_name然后这个proto_name和proto_id组成一列数据显示,循环显示 把rs1符合recordset1的project_id的所有protoid protoname都显示出来。代码貌似是没语法错误的了 但是不知道为什么显示不出来 请各路英雄打救打救!谢谢!
...全文
81 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
leekeeny 2009-08-24
  • 打赏
  • 举报
回复
数据库里面我用了zerofill而已 实际上他们是没区别的。我想显示的是proto_id 而不是projid 我可能表述得不是很清楚吧.but anyway,thank you all the same.
hookee 2009-08-24
  • 打赏
  • 举报
回复
projid 是 1 还是 '000000000001'?
leekeeny 2009-08-24
  • 打赏
  • 举报
回复
谢谢大家 我的问题解决了,我用判断的时候用了rs其实应该是用rs1因为我rs是从rs1得来的所以我的首要判断是rs1 还有response.Write(Recordset1.Fields.Item("proto_id").Value)&","应该改成:response.Write rs1("proto_id")最后得出我想要的结果了 还有谢谢大家的recordcount的提醒我以后都会注意rs.open的写法了。好了结贴了 谢谢大家。
leekeeny 2009-08-24
  • 打赏
  • 举报
回复
project_num,proto_id,manager_id,project_id
000000000018, 1, 000000000001, 000000000001
000000000019, 2, 000000000001, 000000000001
000000000020, 1, 000000000002, 000000000002
000000000021, 1, 000000000002, 000000000003

这是我数据库project_m里面的数据,按照常理来说 project_id=1时候输出应该是
proto_name,proto_id
1号产品, 1
2号产品, 1
但是他只输出了
proto_name,proto_id
1号产品, 1
toury 2009-08-24
  • 打赏
  • 举报
回复
set rs1 = myconn.execute(sql1)
。。。。。。。。。。。

set rs = myconn.execute(sql)
这样得到的记录集是动态游标,没有recordcount,都是-1.

要使用recordcount,应该用
rs.open sql,conn,1,1(除了2,2之外)
三楼の郎 2009-08-24
  • 打赏
  • 举报
回复
用Connection.Execute方法返回的RecordSet,其Recordcount属性都等于-1,建议你还是用RecordSet.Open方法打开记录集吧!
leekeeny 2009-08-24
  • 打赏
  • 举报
回复
Do While Not rs.eof
response.Write projid & ","
response.Write rs("proto_name")
counter = counter + 1
rs.movenext
Loop

按照hookee的写法 刚才我也发现了response.Write(Recordset1.Fields.Item("proto_id").Value)&","后来我也是改成你这样 但是还是不能循环输出。
也只能输出首个数据。
leekeeny 2009-08-24
  • 打赏
  • 举报
回复
我rs.recourdcount 和rs1.recordcount都等于-1.
不晓得什么问题啊。
hookee 2009-08-24
  • 打赏
  • 举报
回复
project_id列是字符串的话
<% 
strConnection = "dsn=mysql;driver={myodbddriver};server=localhost;uid=root;pwd=;database=proto_management_test"
Set myconn = Server.CreateObject("ADODB.Connection")
myconn.Open strConnection
dim counter
counter = 0

projid = recordset1.fields.item("project_id")
sql = "select proto_info.proto_name from project_m, proto_info where proto_info.project_id = project_m.project_id and project_m.project_id = '"&projid&"'"
set rs = server.CreateObject("adodb.recordset")
set rs = myconn.execute(sql)
if rs.eof and rs.bof then
response.write "没有对应的产品名"
else
Do While Not rs.eof
response.Write projid & ","
response.Write rs("proto_name")
counter = counter + 1
rs.movenext
Loop
end if
rs.close:set rs = nothing
myconn.close:set myconn = nothing
%>
leekeeny 2009-08-24
  • 打赏
  • 举报
回复
用了你的建议 写出while not rs.eof 但是它没有循环显示 只显示了首条相关数据。
Atai-Lu 2009-08-24
  • 打赏
  • 举报
回复
你的数据库是什么?
While (counter < rs1.recordcount) 写错了吧?
你输出rs1.recordcount看看是多少,另外我怎么看怎么觉得应该是 rs.recordcount而非rs1.recordcount
建议写成
while not rs.eof

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧