|
主题: 问一个服务器行为中循环的问题
|
 mantou_5d
职务:普通成员
等级:3
金币:1.0
发贴:437
注册:2002/10/27 0:08:41
|
#12003/9/1 21:30:20
问一个问题,双重循环, dwmx中的repeate****(有版本翻译为重复区域)想必大家都会用了吧?就是先选中一段,服务器行为/重复区域,然后选择重复多少次。
我现在想做这样的效果:
亚洲 中国 日本 韩国 泰国 印度
欧洲 英国 法国 瑞典 挪威 德国
美洲 巴西 智利 加拿大 墨西哥 美国
非洲 南非 埃及 尼日利亚 索马里
数据库的设置是这样的: 有两个表,一个是zhou,一个是guojia
表zhou有3个字段 id 自动编号 zhouming 字符 jianjie 备注 表 guojia
表guojia有4个字段 id 自动编号 guojiaming 字符 zhou 数字 jianjie 备注
我不想每一个洲循环一遍,那样就失去了程序的意义了,而且原来我的想法也不是这样,远比这个复杂,我只是举了这个例子而已。我不是浮躁的人,我到处都找不到这方面的资料,精华里也没有。一些所谓的精通asp之类的书更是连皮毛都没够到,所以才在这里问,希望高手解答,非常感谢。 (不好意思,写错了,国家少了一个字段)
编辑历史:[这消息被mantou编辑过(编辑时间2003-09-01 22:15:52)]
|
 缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
|
#22003/9/1 21:42:35
循环州 |___循环国家
注意在循环国家时要即使关闭记录集,就是rs.close()需要在循环洲以内
|
 mantou_5d
职务:普通成员
等级:3
金币:1.0
发贴:437
注册:2002/10/27 0:08:41
|
#32003/9/1 22:16:23
不好意思,国家的表少了一个字段,请您再看看!
|
 缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
|
#42003/9/1 22:53:09
不管少没有少,原理是这样
|
 Such a lovely place
职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
|
#52003/9/1 23:02:01
我想请教一下allinhands: 如果不及时关闭国家纪录集,我想问题也不是很大吧?
while not rs洲.eof dim rs国家 rs国家.source="select * from tb2 where zhou= rs洲.id" while not rs国家.eof response.write"国家” rs国家.movenext() wend rs洲.movenext() wend rs洲.Close() Set rs洲 = Nothing rs国家.Close() Set rs国家 = Nothing
代码大致是这样,因为每个洲的国家循环完毕,重新定义国家记录集,记录集名称都是一样的,也就是说后一记录集变量会覆盖前一记录集变量,对服务器不会造成额外负担,我是这么理解的,不知道对不对,请指教。谢谢。
|
 mantou_5d
职务:普通成员
等级:3
金币:1.0
发贴:437
注册:2002/10/27 0:08:41
|
#62003/9/1 23:42:28
国家的记录集怎么写?怎么筛选?WHERE ……再怎么写?
|
 Such a lovely place
职务:普通成员
等级:2
金币:10.0
发贴:573
注册:2001/11/4 21:15:56
|
#72003/9/2 15:13:12
呵呵。这要谈到数据库两张表了: 洲表字段:zhouid zhouming jianjie 国家表字段:guojiaid guojiaming jianjie zhouid 其中国家表字段zhouid要为长整型,并在关系里把洲表zhouid和国家表zhouid两个同名字段设为“一对多”对应关系。ok,这是前奏,到这步,数据库设置完毕。
接下来就是建造记录集,在dw-mx建recordset1为洲,建recordset2为国家。选择服务器重复行为,分别加在两个记录集上,假设都为显示全部记录。转到代码编辑模式下,修改为: <% While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) Dim Recordset2 Dim Recordset2_numRows
Set Recordset2 = Server.CreateObject("ADODB.Recordset") Recordset2.ActiveConnection = MM_XXXXXXX_STRING Recordset2.Source = "SELECT * FROM tb2 where zhouid="&Recordset1.Fields.Item("zhouid").value&"" Recordset2.CursorType = 0 Recordset2.CursorLocation = 2 Recordset2.LockType = 1 Recordset2.Open()
Recordset2_numRows = 0
Dim Repeat2__numRows Dim Repeat2__index
Repeat2__numRows = -1 Repeat2__index = 0 Recordset2_numRows = Recordset2_numRows + Repeat2__numRows %> <%=(Recordset1.Fields.Item("zhouming").value)%> <% While ((Repeat2__numRows <> 0) AND (NOT Recordset2.EOF)) %> <%=(Recordset2.Fields.Item("guojiaming").value)%> <% Repeat2__index=Repeat2__index+1 Repeat2__numRows=Repeat2__numRows-1 Recordset2.MoveNext() Wend %> <% Repeat1__index=Repeat1__index+1 Repeat1__numRows=Repeat1__numRows-1 Recordset1.MoveNext() Wend %>
一 切 ok 了……
编辑历史:[这消息被b小调雨后编辑过(编辑时间2003-09-02 15:14:39)]
|