为什么ll_num返回值为负数?
long n_node
lds_tree = CREATE datastore
lds_tree.dataobject = "dw_tree_browse"
lds_tree.settransobject(sqlca)
lds_tree.retrieve()
n_node=lds_tree.object.tree_node[1]
ll_num = lds_tree.find("lds_tree.tree_node = n_node",1,100000)
其中tree_node 为NUMBER,如果ll_num = lds_tree.find("lds_tree.tree_node = 1",1,100000)就是正确的,
这个表达式的变量怎么处理?
------解决方案--------------------
ll_num = lds_tree.find("tree_node =" +string(n_node),1,100000)
------解决方案--------------------
long dwcontrol.Find ( string expression, long start, long end )
其中expression为字符串
在字符串中不能插入变量,但是可以用构造字符串变量的方式来加入字符串
n_node为数值型,则可以这样构造参数expression
"tree_node = " +string(n_node)
------解决方案--------------------
3楼说完了,我来路过一下
另外,在数据量比较大的情况下,尤其是要循环查找的情况下,find函数最好配合sort函数,再写个合适的表达式字符串,可以极大地提高查找效率
------解决方案--------------------
------解决方案--------------------
ll_num = lds_tree.find("tree_node =" +string(n_node),1,100000)
按照这样写,就对了。
在双引号中出现的字符串,PB在执行时仍然按字符串常量处理。
假如n_node=1
字符串"lds_tree.tree_node = n_node",PB在执行时,仍然是"lds_tree.tree_node = n_node"
字符串"lds_tree.tree_node = "+string(n_node),PB在执行时,就变成了"lds_tree.tree_node = 1"
------解决方案--------------------
ll_num = lds_tree.find("tree_node = '"+String(n_node)+"'",1,100000)
------解决方案--------------------
------解决方案--------------------