当前位置: 代码迷 >> PB >> 关于PB 中find 变量表达式的有关问题
  详细解决方案

关于PB 中find 变量表达式的有关问题

热度:38   发布时间:2016-04-29 08:23:22.0
关于PB 中find 变量表达式的问题 急
为什么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)

------解决方案--------------------
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) 

------解决方案--------------------
探讨
ll_num = lds_tree.find("tree_node =" +string(n_node),1,100000)

------解决方案--------------------
探讨
ll_num = lds_tree.find("tree_node =" +string(n_node),1,100000)
  相关解决方案