以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  表达式转计算代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=1172)

--  作者:易服
--  发布时间:2008/11/19 11:56:00
--  表达式转计算代码
由内部数据导出作一外部数据系统,原表达式的列的表达式需要转换成计算代码
IIF([造林类别] = \'退耕\',[设计面积],null)
IIF([造林类别] = \'退耕\'and[林种] = \'生态林\',[设计面积],null)
“合格面积”列等于“设计面积”列
--  作者:程兴刚
--  发布时间:2008/11/19 12:26:00
--  
if e.col.name = "计算代码列" \'改为计算代码列的列名称
     if e.datarow("造林类别")= "退耕" or e.datarow("造林类别")= "退耕" and e.datarow("林种") = "生态林"
           e.datarow("计算代码列") =  e.datarow("设计面积")
     else
           e.datarow("计算代码列")  is nothing
     end if
end if

其实,您的第二个条件是多余的,因为第一个判断条件就决定了,这样的运行效是一样的:

if e.col.name = "计算代码列" \'改为计算代码列的列名称
     if e.datarow("造林类别")= "退耕" 
           e.datarow("计算代码列") =  e.datarow("设计面积")
     else
           e.datarow("计算代码列")  is nothing
     end if
end if

--  作者:czy
--  发布时间:2008/11/19 12:31:00
--  
楼主的两个表达式好象不在一个计算列中吧?

如果不是,可以试试计算代码:

if e.datarow("造林类别") = "退耕" Then
   e.datarow(e.datacol.name) = e.datarow("设计面积")
else
   e.datarow(e.datacol.name) = nothing
end if


if e.datarow("造林类别") = "退耕" and e.datarow("林种") = "生态林" Then
   e.datarow(e.datacol.name) = e.datarow("设计面积")
else
   e.datarow(e.datacol.name) = nothing
end if


--  作者:易服
--  发布时间:2008/11/19 12:33:00
--  
独立的表达式:IIF([造林类别] = \'退耕\'and[林种] = \'生态林\',[设计面积],null)
                    “合格面积”列等于“设计面积”列
--  作者:shxiaoya
--  发布时间:2008/11/19 12:36:00
--  
if e.datarow("造林类别") = "退耕" and e.datarow("林种") = "生态林" Then
   e.datarow("合格面积") = e.datarow("设计面积")
else
   e.datarow("合格面积") = nothing
end if

--  作者:czy
--  发布时间:2008/11/19 12:38:00
--  
以下是引用易服在2008-11-19 12:33:00的发言:
独立的表达式:IIF([造林类别] = \'退耕\'and[林种] = \'生态林\',[设计面积],null)
                    “合格面积”列等于“设计面积”列


三楼是两个独立的计算代码。


--  作者:易服
--  发布时间:2008/11/19 12:42:00
--  

--  作者:易服
--  发布时间:2008/11/19 12:43:00
--  
是的,怎么不会立即生效呢?
--  作者:狐狸爸爸
--  发布时间:2008/11/19 12:47:00
--  
以下是引用易服在2008-11-19 12:43:00的发言:
是的,怎么不会立即生效呢?


呵呵,看一下帮助中关于计算代码的说明。


--  作者:czy
--  发布时间:2008/11/19 12:47:00
--  
计算代码是需要重算的,代码设置完成后点一下计算代码右侧的计算按钮即可。