NQ 4.3nq急速多少的断点多少啊 求大虾帮忙

vb treeview列数据库数据作为节点问题,如何列出符合的所有数据作节点-CSDN论坛
vb treeview列数据库数据作为节点问题,如何列出符合的所有数据作节点
之前用不同位数来区分,操作实在是太复杂且限制较大,现在用不同表来分层级,但是实在搞不明白,求教高手了。
id&&&&&&&&&&&bm
1&&&&&&&&&&&甲镇
2&&&&&&&&&&&乙镇
b1&&&&id&&&&bm
2&&&&&&5&&&&&东风中学
1&&&&&6&&&&&西风中心小学
1&&&&&&8&&&&红光小学
b1&&&&id&&&&bm
5&&&&&&&9&&&&甲分校
6&&&&&&11&&乙分校
b1&&&&id&&&&bm
9&&&&&&25&&&语文组
11&&&&26&&数学组
11&&&&27&&语文组
b1&&&&&id&&&&bm
25&&&&&&12&&&办公室
25&&&&&&11&&&会议室
25&&&&&&&8&&&&研究室
读取到treeview成下面的层级关系:
根节点:甲镇:
&&&&爷节点:西风中心小学
&&&&&&&&父节点:乙分校
&&&&&&&&&&&&子节点:语文组
&&&&&&&&&&&&&&&&&&&&数学组
&&&&爷节点:红光小学
根节点:乙镇
&&&&爷节点:东风中学
&&&&&&&&父节点:甲分校
&&&&&&&&&&&&子节点:语文组
&&&&&&&&&&&&&&&&孙节点:办公室
&&&&&&&&&&&&&&&&孙节点:&会议室
&&&&&&&&&&&&&&&&孙节点:研究室
规律是:下一个表的字段b1是前一个表的ID的值实现父子节点的分层。如表bm2的b1字段的值与表bm1的id字段关联。
我实行很菜,求大虾快快来救命啊。
这样它提示找不到元素
Private&Sub&treeload()
Dim&nodeindex&As&Node
'On&Error&Resume&Next
Call&opendata
Set&rs3&=&CreateObject("ADODB.Recordset")
Set&rs1&=&CreateObject("ADODB.Recordset")
Set&rs2&=&CreateObject("ADODB.Recordset")
'conn.Open&"Provider=Microsoft.Jet.OLEDB.4.0;Data&Source="&&&App.Path&&&"\MobileDB.mdb"
rs1.CursorLocation&=&adUseClient
Set&nodeindex&=&TreeView1.Nodes.Add(,&,&"全部",&"全部",&1)
nodeindex.Sorted&=&True
&&rs1.Open&"Select&*&From&bm1&order&by&id&asc",&conn,&1,&1
&&If&Not&rs1.EOF&Then
&&&&While&Not&rs1.EOF
&&&&Set&nodeindex&=&TreeView1.Nodes.Add("全部",&tvwChild,&"a"&&&rs1.Fields("id"),&rs1.Fields("bm"),&1,&2)
nodeindex.Sorted&=&True
&&&&&&&&&Set&xNode&=&Nothing
&&&&&&&&&idb&=&rs1.Fields("id")
&&&&&&&&&&&For&ii&=&2&To&3
&&&&&&&&&&&&&&Call&treez(idb,&"bm"&&&ii,&ii)
&&&&&&&&&&&&&&Next&ii
&&&&&&&&rs1.MoveNext
&&&&rs1.Close
&&&&Set&rs1&=&Nothing
&&&&Set&rs2&=&Nothing
'Set&nodeindex&=&TreeView1.Nodes.Add("爷2",&tvwChild,&"父4",&"芒果",&1)
'nodeindex.Sorted&=&True
Private&Sub&treez(id,&bm,&ii)
Set&rs2&=&CreateObject("ADODB.Recordset")
&MsgBox&(id&&&"-"&&&bm&&&"-"&&&ii)
&rs2.Open&"select&*&from&"&&&bm&&&"&where&b1="&&&id&&&"&order&by&id&asc",&conn,&1,&1
&&&&&&&&If&Not&rs2.EOF&Then
&&&&&&&&While&Not&rs2.EOF
&&&&&&&&MsgBox&(id&&&"-"&&&bm&&&"-"&&&ii&&&"-"&&&rs2.Fields("b1")&&&rs2.Fields("bm"))
&&&&&&&&&&&&&&Set&xNode&=&TreeView1.Nodes.Add("a"&&&rs2.Fields("b1"),&tvwChild)
&&&&&&&&&&&&&&idb&=&rs2.Fields("id")
&&&&&&&&&&&&&xNode.Key&=&xNode.Key&&&"a"&&&ii&&&id&&&"a"&&&ii&&&rs2.Fields("id")
&&&&&&&&&&&&&&xNode.Text&=&rs2.Fields("bm")
&&&&&&&&&&&&&&&xNode.Image&=&1
&&&&&&&&&&&&&&&&xNode.SelectedImage&=&2
&&&&&&&&&&&&&&Set&xNode&=&Nothing
&&&&&&&&&&&&rs2.MoveNext
&&&&&&&&Wend
&&&&&&&&End&If
&&&&&&&&rs2.Close
Set&nodeindex&=&TreeView1.Nodes.Add("全部",&tvwChild,&"a"&&&rs1.Fields("id"),&rs1.Fields("bm"),&1,&2)
Set&xNode&=&TreeView1.Nodes.Add("a"&&&rs2.Fields("b1"),&tvwChild)&'&--&只加到第一层下面
xNode.Key&=&xNode.Key&&&"a"&&&ii&&&id&&&"a"&&&ii&&&rs2.Fields("id")
bm1&bm2&bm3
"bm"&ii就是表名
这个怎么让节点成为下一层的子节点?
引用&4&楼&Tiger_Zhao&的回复:Set&nodeindex&=&TreeView1.Nodes.Add("全部",&tvwChild,&"a"&&&rs1.Fields("id"),&rs1.Fields("bm"),&1,&2)
Set&xNode&=&TreeView1.Nodes.Add("a"&&&rs2.Fields("b1"),&tvwChild)&'&--&只加到第一层下面
xNode.Key&=&xNode.Key&&&"a"&&&ii&&&id&&&"a"&&&ii&&&rs2.Fields("id")
什么意思呢?
东风中学&的&Key&a22a25
甲分校&准备添加到&a5&下面!!!
&If&ii&=&1&Then
&Set&xNode&=&TreeView1.Nodes.Add("a"&&&rs2.Fields("b1"),&tvwChild)&'&--&只加到第一层下面
建议无论第几层,Key&都仅用表名做前缀。
引用&9&楼&Tiger_Zhao&的回复:建议无论第几层,Key&都仅用表名做前缀。
嗯是个好办法,但产生所有节点应该如何处理?
引用&10&楼&aamiiLA&的回复:Quote: 引用&9&楼&Tiger_Zhao&的回复:
建议无论第几层,Key&都仅用表名做前缀。
嗯是个好办法,但产生所有节点应该如何处理?
不明白!什么意思?
Private&Sub&treez(id,&bm,&ii)
'On&Error&Resume&Next
Set&rs2&=&CreateObject("ADODB.Recordset")
'&MsgBox&(id&&&"-"&&&bm&&&"-"&&&ii)
&rs2.Open&"select&*&from&"&&&bm&&&"&where&b1="&&&id&&&"&order&by&id&asc",&conn,&1,&1
&&&&&&&&If&Not&rs2.EOF&Then
&&&&&&&&While&Not&rs2.EOF
&&&&&&&&MsgBox&(id&&&"-"&&&bm&&&"-"&&&ii&&&"-"&&&rs2.Fields("b1")&&&rs2.Fields("bm"))
&&&&&&&&If&ii&=&1&Then
&Set&xNode&=&TreeView1.Nodes.Add("bm"&&&rs2.Fields("b1"),&tvwChild)&'&--&只加到第一层下面
&&&&&&&&End&If
&&&&&&&&&&&&&&Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("b1"),&tvwChild)
&&&&&&&&&&&&&idb&=&rs2.Fields("id")
&&&&&&&&&&&&&xNode.Key&=&"bm"&&&ii&&&rs2.Fields("id")
&&&&&&&&&&&&&&xNode.Text&=&rs2.Fields("bm")
&&&&&&&&&&&&&&&xNode.Image&=&1
&&&&&&&&&&&&&&&&xNode.SelectedImage&=&2
&&&&&&&&&&&&&&Set&xNode&=&Nothing
&&&&&&&&&&&&rs2.MoveNext
&&&&&&&&Wend
&&&&&&&&End&If
&&&&&&&&rs2.Close
Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("b1"),&tvwChild)
错误,当BM=5时找不到元素.
Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("b1"),&tvwChild)
错误,当BM=“BM5”时找不到元素.
Private&Sub&treez(id,&bm,&ii)
set&rs2&=&CreateObject("ADODB.Recordset")
'&MsgBox&(id&&&"-"&&&bm&&&"-"&&&ii)
&rs2.Open&"select&*&from&"&&&bm&&&"&where&b1="&&&id&&&"&order&by&id&asc",&conn,&1,&1
&&&&&&&&If&Not&rs2.EOF&Then
&&&&&&&&While&Not&rs2.EOF
&&&&&&&&MsgBox&(id&&&"-"&&&bm&&&"-"&&&ii&&&"-"&&&rs2.Fields("b1")&&&rs2.Fields("bm"))
&&&&&&&&If&ii&=&1&Then
&Set&xNode&=&TreeView1.Nodes.Add("bm"&&&rs2.Fields("b1"),&tvwChild)&'&--&只加到第一层下面
&&&&&&&&End&If
&&&&&&&&&&&&&&Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("b1"),&tvwChild)
&&&&&&&&&&&&&idb&=&rs2.Fields("id")
&&&&&&&&&&&&&xNode.Key&=&bm&&&rs2.Fields("id")
&&&&&&&&&&&&&&xNode.Text&=&rs2.Fields("bm")
&&&&&&&&&&&&&&&xNode.Image&=&1
&&&&&&&&&&&&&&&&xNode.SelectedImage&=&2
&&&&&&&&&&&&&&Set&xNode&=&Nothing
&&&&&&&&&&&&rs2.MoveNext
&&&&&&&&Wend
&&&&&&&&End&If
&&&&&&&&rs2.Close
找不到元素错误。
'这两句什么逻辑?什么意图?
If&ii&=&1&Then
&&&&Set&xNode&=&TreeView1.Nodes.Add("bm"&&&rs2.Fields("b1"),&tvwChild)
Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("b1"),&tvwChild)
你在每句&Nodes.Add&之前,将父Key和自己的Key用&Debug.Print&输出,分析问题不容易的多。
你断点分部debug一下就看到了
首先你要看你的rs里面有没有,然后再看当前取得的是什么
我觉得吧有可能是这样的你的key是这样设定的
&xNode.Key&=&"bm"&&&ii&&&rs2.Fields("id")
也就是bm25;
你添加的时候是寻找
Set&xNode&=&TreeView1.Nodes.Add("bm"&&&rs2.Fields("b1"),&tvwChild)
也就是bm5这个可能是症结所在。你再查查看
我就是想不到好的算法,求大虾帮忙啊。
不是算法问题,是你的程序没有按照算法写而已。
就按照测试数据,纸上画棵树,标出各节点的&Key。
每个&Nodes.Add&的地方下断点,看看你代码中的&Key&和纸上的是否一致,不一致就去修正代码。
调试程序是基本技能,总不能指望别人代劳吧。
高手救命啊。我被卡住了,&这样多个表,表与表之间是上表的ID字段=下表的B1字段,从而可以用WHERE匹配产生关联。
但在Treeview却无法处理:BM1表的ID字段作为第一级节点的KEY,KEY作为第二级的父节点;BM2表的ID字段作为第二级节点的KEY,KEY作为第三级的父节点;BM3表的ID字段作为第三级节点的KEY,KEY作为第四级的父节点。。。本来看似不难的问题,但它就是出现找不到元素,这样一个问题怎么会搞了几天搞不清呢,请高手指点迷津啊。
不可能找不到阿,你不是这么做key的么
&&&&&bm311
&&&&&&bm426
你看我给你回的16楼,你找得时候没有用表的名字啊就用了bm当然找不到了
上面是Call&treez(idb,&"bm"&&&ii,&ii)
ii是从for中来的,跟你说的一样啊?
引用&15&楼&Tiger_Zhao&的回复:你在每句&Nodes.Add&之前,将父Key和自己的Key用&Debug.Print&输出
这还找不到错误!
你所有的&Debug&输出呢?
引用&21&楼&aamiiLA&的回复:上面是Call&treez(idb,&"bm"&&&ii,&ii)
ii是从for中来的,跟你说的一样啊?
你是不是用这句话找的
Set&xNode&=&TreeView1.Nodes.Add("bm"&&&rs2.Fields("b1"),&tvwChild)
这句话里面的bm是加了引号的说明和你的bm变量不同,你把引号去掉试试看吧
Debug.Print&(bm&&&&rs2.Fields("id")
为区分,改了一下表名,将BM1改成BM,将BM2必成BM1,但是出错一样。
Private&Sub&treeload()
Dim&nodeindex&As&Node
Call&opendata
Set&rs1&=&CreateObject("ADODB.Recordset")
rs1.CursorLocation&=&adUseClient
Set&nodeindex&=&TreeView1.Nodes.Add(,&,&"全部",&"全部",&1)
nodeindex.Sorted&=&True
If&rs1.state&=&1&Then&Reco.Close
&&rs1.Open&"Select&*&From&bm&order&by&id&asc",&conn,&1,&1
&&If&Not&rs1.EOF&Then
&&&&While&Not&rs1.EOF
&&&&Set&nodeindex&=&TreeView1.Nodes.Add("全部",&tvwChild,&"bm1"&&&rs1.Fields("id"),&rs1.Fields("bm"),&1,&2)
nodeindex.Sorted&=&True
&&&&&&&&&&Set&xNode&=&Nothing
&&&&&&&&&idb&=&rs1.Fields("id")
&&&&&&&&&&&For&ii&=&2&To&5
&&&&&&&&&&&&&&Call&treez(idb,&"bm"&&&ii,&ii)
&&&&&&&&&&&&&&Next&ii
&&&&&&&&rs1.MoveNext
&&&&rs1.Close
&&&&Set&rs1&=&Nothing
Private&Sub&treez(id,&bm,&ii)
Set&rs2&=&CreateObject("ADODB.Recordset")
&rs2.Open&"select&*&from&"&&&bm&&&"&where&b1="&&&id&&&"&order&by&id&desc",&conn,&1,&1
&&&&&&&&If&Not&rs2.EOF&Then
&&&&&&&&While&Not&rs2.EOF
&&&&&&&&Debug.Print&bm&&&rs2.Fields("id")
&&&&&&&&&&&&&&Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("id"),&tvwChild)
&&&&&&&&&&&&&idb&=&rs2.Fields("id")
&&&&&&&&&&&&&xNode.Key&=&bm&&&rs2.Fields("id")
&&&&&&&&&&&&&&xNode.Text&=&rs2.Fields("bm")
&&&&&&&&&&&&&&&xNode.Image&=&1
&&&&&&&&&&&&&&&&xNode.SelectedImage&=&2
&&&&&&&&&&&&&&Set&xNode&=&Nothing
&&&&&&&&&&&&rs2.MoveNext
&&&&&&&&Wend
&&&&&&&&End&If
&&&&&&&&rs2.Close
你除了bm12对了其他我都跟不上你的逻辑
&&&&&&&&bm425
&&&&&&&&&&&bm612
这条线才是对的你的逻辑是key=表名&&&&id值
可是根据你的treeload函数你的treenode逻辑
然后你要找bm开头的当然找不到了
还有一种就是你不是调用的时候是ii=2&to&3么,你的bm变量怎么bm2出现呢?
都乱掉了,你把你的两个函数重新贴一下吧。
你肯定找不到阿,因为你是找父node的key而不是本表的阿
你看看的循环
&For&ii&=&2&To&5
&&&&&&&&&&&&&&Call&treez(idb,&"bm"&&&ii,&ii)&&'--第一次调用的时候你的bm&就已经="bm2"了
&&&&&&&&&&&&&&Next&ii
你后面要找
Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("id"),&tvwChild)&&'--这里你要找的是bm12但是因为你的bm变量问题变成了bm2+id值了
Private&Sub&treez(id,&bm,&ii)&'--这里你传第三个参数ii进去用在哪了?
尝试一下ii的值从1开始
引用&24&楼&aamiiLA&的回复:Debug.Print&(bm&&&&rs2.Fields("id")
一个Key有什么用。
引用&15&楼&Tiger_Zhao&的回复:你在每句&Nodes.Add&之前,将父Key和自己的Key用&Debug.Print&输出
至少应该是这样
Private&Sub&treeload()
&&&&Debug.Print&"全部",&"bm1"&&&rs1.Fields("id")
&&&&Set&nodeindex&=&TreeView1.Nodes.Add("全部",&tvwChild,&"bm1"&&&rs1.Fields("id"),&rs1.Fields("bm"),&1,&2)
Private&Sub&treez(id,&bm,&ii)
&&&&Debug.Print&bm&&&rs2.Fields("id"),&bm&&&rs2.Fields("id")
&&&&Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("id"),&tvwChild)
27楼帮你把问题分析出来了。
本来你输出双Ken应该自己很快能发现的!
从1开始也一样。
改成这样也理不清思路:
bm1&id=1&b1=1
bm2&id=1&&b1=1
bm3&id=1&b1=1
用表名作KEY应该是不行的么?
比如第二层要用第一层的KEY作父节点,但你第一层哪能有BM2这个子节点呢?
引用&30&楼&aamiiLA&的回复:从1开始也一样。
改成这样也理不清思路:
bm1&id=1&b1=1
bm2&id=1&&b1=1
bm3&id=1&b1=1
你语文是异次元老师教的。
27楼“从1开始说”的是什么东西,看仔细了。
引用&31&楼&aamiiLA&的回复:用表名作KEY应该是不行的么?
比如第二层要用第一层的KEY作父节点,但你第一层哪能有BM2这个子节点呢?
你先把28楼要求的输出贴出来。
Debug.Print&"全部",&"bm1"&&&rs1.Fields("id"):
Debug.Print&bm&&&rs2.Fields("id"):
去掉第一层的order&by&id&asc后Debug.Print&bm&&&rs2.Fields("id"):是
Debug.Print&"全部",&"bm1"&&&rs1.Fields("id"):
Debug.Print&bm&&&rs2.Fields("id"):
你程序靠脑袋运行的?
有复制28楼的语句吗?
两个Key!两个!!两!!!
全部&&&&&&&&&&bm11
全部&&&&&&&&&&bm12
全部&&&&&&&&&&bm13
bm182&&&&&&&&&bm182
bm284&&&&&&&&&bm284到这里提示找不到元素了,请高手帮忙分析。
Debug.Print&"全部",&"bm1"&&&rs1.Fields("id")
全部&&&&&&&&&&bm11
全部&&&&&&&&&&bm12
全部&&&&&&&&&&bm13
如果改成下面这样:
Debug.Print&bm&&&rs2.Fields("b1"),&bm&&&rs2.Fields("id")
&&&&&&&&&&&&Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("b1"),&tvwChild)
&&&&&&&&&&&&&idb&=&rs2.Fields("id")
&&&&&&&&&&&&&xNode.Key&=&bm&&&rs2.Fields("id")
bm13&&&&&&&&&&bm182
bm282&&&&&&&&&bm284
Private&Sub&treez(id,&bm,&ii)
'On&Error&Resume&Next
Set&rs2&=&CreateObject("ADODB.Recordset")
&rs2.Open&"select&*&from&"&&&bm&&&"&where&b1="&&&id&&&"&",&conn,&1,&1
&&&&&&&&If&Not&rs2.EOF&Then
&&&&&&&&While&Not&rs2.EOF
&&&&&&&Debug.Print&bm&&&rs2.Fields("b1"),&"bm"&&&ii&+&1&&&rs2.Fields("id")
&&&&&&&&&&&&Set&xNode&=&TreeView1.Nodes.Add(bm&&&rs2.Fields("b1"),&tvwChild)
&&&&&&&&&&&&&idb&=&rs2.Fields("id")
&&&&&&&&&&&&&xNode.Key&=&"bm"&&&ii&+&1&&&(rs2.Fields("id"))
&&&&&&&&&&&&&&xNode.Text&=&rs2.Fields("bm")
&&&&&&&&&&&&&&&xNode.Image&=&1
&&&&&&&&&&&&&&&&xNode.SelectedImage&=&2
&&&&&&&&&&&&&&Set&xNode&=&Nothing
&&&&&&&&&&&&rs2.MoveNext
&&&&&&&&Wend
&&&&&&&&End&If
&&&&&&&&rs2.Close
改成这样有所改观,但到52的时候出现关键字问题,看来要在KEY中加字母?
全部&&&&&&&&&&bm117
全部&&&&&&&&&&bm116
全部&&&&&&&&&&bm115
全部&&&&&&&&&&bm114
全部&&&&&&&&&&bm113
全部&&&&&&&&&&bm112
全部&&&&&&&&&&bm111
全部&&&&&&&&&&bm110
全部&&&&&&&&&&bm19
全部&&&&&&&&&&bm18
全部&&&&&&&&&&bm17
全部&&&&&&&&&&bm16
全部&&&&&&&&&&bm15
全部&&&&&&&&&&bm14
全部&&&&&&&&&&bm13
bm13&&&&&&&&&&bm282
bm282&&&&&&&&&bm384
bm384&&&&&&&&&bm42
bm42&&&&&&&&&&bm52
bm52&&&&&&&&&&bm62
bm62&&&&&&&&&&bm72
全部&&&&&&&&&&bm12
bm42&&&&&&&&&&bm52
不就是27楼说的问题。
全部&&&&&&&&&&bm11&&&既然表名改为bm了,Key&应该是bm1
全部&&&&&&&&&&bm12
全部&&&&&&&&&&bm13
bm13&&&&&&&&&&&bm182&
bm282&&&&&&&&&bm284&&&&&&&&&&&子Keybm2开头,那么父Key应该是bm1开头
父Key、子Key如果前缀相同就是同一级,哪来的父子关系?
只要看到父Key在前面的子Key(第二列)中没出现过,就是错了。
建议Key的表名和id之间加个&-&字符,看得更清楚。
上面好像可行。
但是现在有个关键字不唯一问题。
如果是下面这样,就会产生关键字不唯一:
&&bm1&id=1&b1=1
&&&&bm2&id=1&&b1=1
&&&&&&bm3&id=1&b1=1
但这种情况是存在的。
觉得必须在KEY中动手脚,怎么加字符好呢?
bm-1&bm1-1
bm1-1&bm2-1
bm2-1&bm3-1
那你就把key中间加分隔符比如
类似这样的
'-------------------------
你纠结这么久的根本原因是你不会断点debug
&For&ii&=&2&To&5
&&&&&&&&&&&&&&Call&treez(idb,&"bm"&&&ii,&ii)&&'--这里添加断点,然后按F8单步debug
&&&&&&&&&&&&&&Next&ii
对于有怀疑的变量值在immediate窗口打
另外你要注意每次添加子node,你需要的得到父node的key然后添加进去,再给子node一个新的key,这个key要符合逻辑。
所以你在找父node的时候应该用上层表的表名字,给子node添加key的时候要用本层表的表名
我这么解释不知道你是否理解
全部&&&&&&&&&&bm117
全部&&&&&&&&&&bm116
全部&&&&&&&&&&bm115
全部&&&&&&&&&&bm114
全部&&&&&&&&&&bm113
全部&&&&&&&&&&bm112
全部&&&&&&&&&&bm111
全部&&&&&&&&&&bm110
全部&&&&&&&&&&bm19
全部&&&&&&&&&&bm18
全部&&&&&&&&&&bm17
全部&&&&&&&&&&bm16
全部&&&&&&&&&&bm15
全部&&&&&&&&&&bm14
全部&&&&&&&&&&bm13
bm1a3&&&&&&&&&bm2a82
bm2a82&&&&&&&&bm3a84
bm3a84&&&&&&&&bm4a2
bm4a2&&&&&&&&&bm5a2
全部&&&&&&&&&&bm12
bm4a2&&&&&&&&&bm5a2
奇怪,有重复出现的情况?
这实际是一个嵌套循环。
while&not&rs.eof'显示bm表中所有数据的节点
for&ii=1&to&8
这里分8层(如果有)显示BM1至BM8的所有对应的数据的节点
rs.movenext
高手再帮忙看看有无漏洞,为何会重复?是不是要加判断某节点是否存在,还是这个的思路有问题?
&&&&&&&&&&&For&ii&=&2&To&5
&&&&&&&&&&&&&&Call&treez(idb,&"bm"&&&ii,&ii)
&&&&&&&&&&&&&&Next&ii
这个&idb&是第一级的&idb,怎么能用来作为第&3、4、5&级的父id!
如果你能保证所有的&b1&字段值都是有效的,
treez()&不用&idb&参数了,一次性将一级的所有节点都加上。
treez()&就不用在&rs1&循环中调用,移到循环后面。
引用&46&楼&Tiger_Zhao&的回复:&&&&&&&&&&&For&ii&=&2&To&5
&&&&&&&&&&&&&&Call&treez(idb,&"bm"&&&ii,&ii)
&&&&&&&&&&&&&&Next&ii
这个&idb&是第一级的&idb,怎么能用来作为第&3、4、5&级的父id!
如果你能保证所有的&b1&字段值都是有效的,
treez()&不用&idb&参数了,一次性将一级的所有节点都加上。
treez()&就不用在&rs1&循环中调用,移到循环后面。
搂主这个方法估计不行了,应该要递归才能把这么多层挂上
‘-------------------------------
搂主,如果你要一次性加载所有node的话,你需要用递归的办法。你搜索一下递归添加treeview&node
另外一个思路就是你先添加第一层,然后在下面添加dummy&node,当用户expand&treeview的时候再添加下面一层的。这种方法应该更合适你。
百度上搜索不到“递归添加treeview&node”有用的贴子。
仔细想想,B1上一层的ID,因为与这个ID关联的单位可能有多个,也就是B1必然有相同,那么关键字一定会重复。
还有一个问题,就是第二层的ID为22的节点关键字是BM2A22,第二层的ID为2对应的第三层的ID为2的关键字也是BM2A22,也会造成关键字相同。
难道这种分层节点不是用这种方法列出来的么?
A)Key&是用&id&拼的,不是用&b1&字段拼的。
B)第三层是&BM3A22
先不要编程序了;先在纸上把树画出了,仔细想想。
回复后使用快捷导航没有帐号?
查看: 3865|回复: 139
TracyMacGrady
Virginbless
Lv.6, 积分 3275, 距离下一级还需 1725 积分
UID3824226帖子威望0 多玩草31 草
本人主要讲无私流下的急速,火流的看末尾就可以走了。
以下按急速为8500有为例,此时闪现1.13s,大神光,圣光,普照1.89s,神圣震击和审判5s.
举例无私流的QS手法为神圣震击-电筒or圣令-审判-普照or大小神光-手电筒or圣令。或者神圣震击-审判-普照大小神光-电筒or圣令。等等各种循环
还有几种手法也类似。出圣光灌注又在两个以下审判时也会该别轮次。
此手法下考虑到有的没的延迟大致可以看出一轮以后恰好所有技能冷却结束进入下一循环。
如果算上圣光关注的-1.5s或有时候因为丢保护牺牲纯净和特殊情况多一个大圣光等等浪费的CD的存在也能恰好多掐入一个技能进循环。
从大小神光和普照的CD来说,一个审判后1.2 两个是0.6三个就是百分百顺发了。
如果是圣光灌注后则一个是0.5(重叠无私无私被抵消) 两个审判是0.2&&三个老样子是瞬发。
基本就是每一个技能都是处于卡GCD的存在、如果非要和我说GCD多少多少,我只想说是先有了技能才有的GCD,没放完技能讨论下一个技能怎么不能放完全是放屁。
算上这些RP好的话8500急速能帮NQ“刚好”多切一个技能进循环,少一点急速不是不可以,
考虑到lag,和实战中走位对手法的影响 3506急速党有时候就会在此情况下变得有些尴尬,上文的手法依然可以随意变动但是缺&少了一个额外技能&。
(在这里顺带说下这2个CD试验的暴击无私急速流NQ,多次灌注后其实也能算是达到了所谓的8500急速甚至更多,3506的急速依旧可以达到8500的效果,当然自身的暴击白字也要够高拉我试验的时候是25%左右)
8500朝上不是不可以,第一延迟的存在有些人的确需要高急速,第二为了8500的急速可以看出全身必须是急速宝石或者全身急速重铸,这样对装等不够的NQ而言再去拼急速不是很合理的,可能会造成精神不够,or暴击很渣(前期NQ还是很需要暴击填补HPS的,但不用刻意堆),or精通太低(精通盾对急速流而言的在其他属性够用以后当然是多多益善NQ基本的HPS还是靠他提供)。
通过对尾巴尖的升级后的试验我也承认了数据存在多位小数,所以之前对数据上无限急速存在收益降低的说法持保留意见,断点还是在1W2那边。
推崇急速,其实我没有学别人怎么的,也是自己试验出来的。讲通俗点这个版本的boss战很多需要大量跑位,这对NQ来说可以算得上是致命伤了,急速流或许没那么好,可是在初期来说,这是减少容错的不二属性。
当然还有很多不走无私走永恒的急速流,抛开了审判循环,这种流派个人还是不推荐上8500的急速,同是急速流永恒火的跳数收益在7170点,道理不讲了7170急速14跳火,因为不需要打审判手法也完全不考虑多不多一个技能进循环,这些绿字还是用在对你更有帮助的地方吧。
NQ这个版本流派很多,550还不到的装等还是上个版本的精通流派比较合适,走了其他流派会造成三围畸形画虎不成反类犬自身HPS反而下降。
565+的开荒H的个人推荐急速精通无私流&&,稳定提供大量HPS
555+碾压PT难度的推荐急速暴击流在不需要突然爆发的时候能提供极为可观的hPS。
说这些也只是个人建议,每个团队配置不一样还是看各位自己去拿捏吧。
团队已经过了H咆哮,也算有点小经验来这里废话吧。那些咆哮没按在地上打,一个H没打过,装等550徘徊三围本身不好的人,说我是凑5秒的我也没办法了。
本文有很多错误之处吧,求轻拍。
Lv.4, 积分 433, 距离下一级还需 567 积分
UID帖子威望0 多玩草0 草
精通流&&也不错啊
新人欢迎积分2 阅读权限90积分25291精华0UID3264957帖子金钱13468 威望-3
Lv.9, 积分 25291, 距离下一级还需 9709 积分
UID3264957帖子威望-3 多玩草67 草
1、实践可以告诉你,洞察和5%法术急速下,即使你瞬发,在你的8500急速下,也需要占用1.11秒的时间,更别扯你的0.x秒的技能
2、实践可以告诉你,圣手不占你其它技能的gcd
3、无私流的循环: 神圣震击-审判-普照大小神光-电筒or圣令
在没有任何buff(包括洞察圣印下),且急速为0时,总共占用时间 2.5+1.5x3=7秒
算上洞察和5%急速buff,变为6.06秒
这是一个跟0急速下6秒cd的震击和审判非常接近以至于你基本感觉不到的差异。
而无论你多少急速,而这些急速同比例降低你的cd和所用时间。
所以,你无论多少急速,都不会出现你卡cd的情况。
而考虑圣光灌注,在那个循环下,无论你急速多少,灌注省出来的时间都会卡cd。而0急速下卡0.4秒,而8500急速同样卡0.4秒,区别只是一个读条快了0.2秒而已。(无论急速多少,圣光灌注足以把神光/普照压的低过gcd)
以上的一切,都跟8500那个数值毫无关系。
请拜托你真正实践了再来说话。只看到0.x秒,看不到占用gcd的可悲实践派。
本帖最后由 shawshark 于
12:01 编辑
在一个伸手不见黑夜的五指,小嗖风风地吹着……
新人欢迎积分2 阅读权限90积分25291精华0UID3264957帖子金钱13468 威望-3
Lv.9, 积分 25291, 距离下一级还需 9709 积分
UID3264957帖子威望-3 多玩草67 草
而且,关键的关键。
从头到尾,废话连篇。
关键的8500是如何推导出来的,完全没有。
而在最敏感的gcd问题上,试图“我只想说是先有了技能才有的GCD,没放完技能讨论下一个技能怎么不能放完全是放屁。”混淆过去?
让别人看到的,只是在显摆急速有多么重要(xxx下多少秒,xxx下多少秒),而跟8500没有半毛钱关系。
如果在5.3,固定cd的情况下,提高急速试图多插入一个技能,那个的确存在阈值。
而在现版本下同比例降低的情况下,想多插一个,那是不可能的事。
本帖最后由 shawshark 于
12:06 编辑
在一个伸手不见黑夜的五指,小嗖风风地吹着……
新人欢迎积分2 阅读权限90积分25291精华0UID3264957帖子金钱13468 威望-3
Lv.9, 积分 25291, 距离下一级还需 9709 积分
UID3264957帖子威望-3 多玩草67 草
另外,在那个帖子中关于启发雕文的言论,在此郑重道歉。
我没发现5.4的新改动,在现版本下,启发雕文还是有一定收益的,而不是过去的那种得不偿失。
在一个伸手不见黑夜的五指,小嗖风风地吹着……
聖灮忽悠伱
新人欢迎积分2 阅读权限80积分12087精华0UID帖子金钱13597 威望10
信仰圣光,方能找寻自我---忽悠你!
Lv.8, 积分 12087, 距离下一级还需 7913 积分
UID帖子威望10 多玩草119 草
别争了,没有定论的。
不同BOSS,天赋的运用都会有些差异。比如在H9,我不可能用无私天赋去刷团。
另外,10人与25的区别也会较大。
此外,个人手法及习惯都会有很影响属性的调整。
最终的只能根据自己的实践,来调整自身属性至最佳。根据开荒BOSS来调整属性天赋。
说白了,有个580以上装等的时候,属性的调整都会灵活很多。
新人欢迎积分2 阅读权限90积分25291精华0UID3264957帖子金钱13468 威望-3
Lv.9, 积分 25291, 距离下一级还需 9709 积分
UID3264957帖子威望-3 多玩草67 草
圣光陨落 发表于
别争了,没有定论的。
不同BOSS,天赋的运用都会有些差异。比如在H9,我不可能用无私天赋去刷团。
如果说什么天赋什么属性或配比绝对最优,那个的确没有定论。
但是8500是否是阈值,这个问题上定论还是有的:不是。
在一个伸手不见黑夜的五指,小嗖风风地吹着……
大劍古妮雅
Lv.3, 积分 129, 距离下一级还需 121 积分
UID帖子威望0 多玩草0 草
shawshark 发表于
如果说什么天赋什么属性或配比绝对最优,那个的确没有定论。
但是8500是否是阈值,这个问题上定论还是有 ...我又看到你在喷了
大劍古妮雅
Lv.3, 积分 129, 距离下一级还需 121 积分
UID帖子威望0 多玩草0 草
其实5秒的震级和5.1 5.2的震级是看不出来的,只是有人觉得5秒我可以打12个你不行,我可以多攒颗豆你不行,但是实际上你一分钟能打出11次就很不错了,因为要应付T的提前预警你有可能会打断循环导致你不能打出12次那那点急速的影响几乎不可计
大劍古妮雅
Lv.3, 积分 129, 距离下一级还需 121 积分
UID帖子威望0 多玩草0 草
还有别喷我
聖灮忽悠伱
新人欢迎积分2 阅读权限80积分12087精华0UID帖子金钱13597 威望10
信仰圣光,方能找寻自我---忽悠你!
Lv.8, 积分 12087, 距离下一级还需 7913 积分
UID帖子威望10 多玩草119 草
大部分人推崇8500急速应该都是从NGA紫大贴子延申出来的。
贴子是作为先驱者给予的初期引导贴。
14:04:11 上传
丶惩戒之眼
Lv.3, 积分 73, 距离下一级还需 177 积分
UID帖子威望0 多玩草0 草
本人NQ装等563,急速1W,精通1W精神1.38W,打10人本特别是10H的时候,用的永恒之火,25人本的时候用的无私,刷起来嗷嗷的,不过最重要的还是控蓝,控不好的话,不管是急速流还是精通流,都是扯淡
聖灮忽悠伱
新人欢迎积分2 阅读权限80积分12087精华0UID帖子金钱13597 威望10
信仰圣光,方能找寻自我---忽悠你!
Lv.8, 积分 12087, 距离下一级还需 7913 积分
UID帖子威望10 多玩草119 草
无私天赋下,将精神及急速投向暴击,提升灌注的触发可能效果会更好。当然这个仅就每个人理解。
从目前来看,NQ天赋及属性取向确实多样化,百花齐放。
个人理解,提升急速,主要还是提升HOT类技能的跳数,及在治疗时寻一个自己觉得舒服的区间(比如普照,神光的读条时间)。
对RAID中有所助益。
14:23:11 上传
TracyMacGrady
Virginbless
Lv.6, 积分 3275, 距离下一级还需 1725 积分
UID3824226帖子威望0 多玩草31 草
shawshark 发表于
如果说什么天赋什么属性或配比绝对最优,那个的确没有定论。
但是8500是否是阈值,这个问题上定论还是有 ...
真搞不懂在你眼里&&,GCD就是影响下一个技能,但是当前技能能安全释放,外加延迟的存在,其实就平摊了你眼里的这些GCD。&&我不是很明白&&实际和理论。你为啥偏要抛弃理论,一头撞死。A情况:大圣光没急速放完没CD和B情况:大圣光放完因为延迟的存在 GCD基本可以无视。到你眼里永远就是被狗吃。而且你没好好看所有内容就在这BB ,BB的内容还是之前的事,我真心搞不懂你这种人。
TracyMacGrady
Virginbless
Lv.6, 积分 3275, 距离下一级还需 1725 积分
UID3824226帖子威望0 多玩草31 草
我帖子里也讲了数据上我自己理解的误区,也讲了14L所说的A,B区别。也讲了一些实战可能出现的情况。然而有些人一进贴,抓着8500就不是断点来说事。然后以红卫兵角度把人打成反动派。&&至少我的团是国服前30过掉咆哮吼的,至少我自己参与了大部分开荒。做个经验分享,非要把A扯到B冷艳高贵个什么呢。看看这些跳来跳去的人抓着所谓理论数据不放,结果他们其实一个BOSS都没打过。真的很悲哀的。&&
2秒大圣光虽然没GCD影响,但是却要2秒才能达成治疗量。
1秒以下的大圣光能造成治疗量,虽然有GCD影响,但是自身也有延迟的存在,所以其实GCD这个可以撇开不谈,除非0lag,自己操作也是0lag那我没办法。我谈的已经是实际了,我相信除了bot没人能做到真正的无缝链接。
需要金钱:1100
手机盒子客户端点击或扫描下载
Powered by

我要回帖

更多关于 4.3nq急速 的文章

 

随机推荐