Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共22 条记录, 每页显示 10 条, 页签: [1] [2] [3]
[浏览完整版]

标题:表达式转计算代码

11楼
程兴刚 发表于:2008/11/19 12:48:00
及时生效用这个:

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


放在表属性的datacolchanging事件中!

12楼
易服 发表于:2008/11/19 16:56:00
表达式:
IIF([造林类别] = '退耕'and [林种] = '生态林',IsNull([设计面积],0) * 20*8,IIF([造林类别] = '退耕'and [林种] = '经济林',IsNull([设计面积],0) * 20*5,Null))
计算代码:
if e.datarow("造林类别") = "退耕"and e.datarow("林种") = "生态林" Then
   e.datarow(e.datacol.name) = e.datarow("设计面积")*20*8
   if e.datarow("造林类别") = "退耕"and e.datarow("林种") = "经济林" Then
   e.datarow(e.datacol.name) = e.datarow("设计面积")*20*5
   end if
else
   e.datarow(e.datacol.name) = nothing
end if
以上代码红色部分不生效,怎么改?
13楼
狐狸爸爸 发表于:2008/11/19 16:59:00
  if e.datarow("造林类别") = "退耕"  or e.datarow("林种") = "经济林" Then
14楼
程兴刚 发表于:2008/11/19 22:17:00
如果您分不清and和or,这样试试,

列计算代码:

if e.datarow("造林类别") = "退耕"
     if e.datarow("林种") = "生态林" Then
          e.datarow(e.datacol.name) = e.datarow("设计面积")*20*8
     else
          if e.datarow("林种") = "经济林" Then
              e.datarow(e.datacol.name) = e.datarow("设计面积")*20*5
          else
              e.datarow(e.datacol.name) = nothing 
          end if
      end if
end if

15楼
易服 发表于:2008/11/19 22:31:00

可能没有表述清楚
IIF([造林类别] = '退耕'and [林种] = '生态林',IsNull([设计面积],0) * 20*8,IIF([造林类别] = '退耕'and [林种] = '经济林',IsNull([设计面积],0) * 20*5,Null))

表达式一致的计算代码???

16楼
程兴刚 发表于:2008/11/19 22:40:00
前面有点问题,测试这个:

if e.datarow("造林类别") = "退耕"
     if e.datarow("林种") = "生态林" Then
          e.datarow(e.datacol.name) = e.datarow("设计面积")*20*8
     else
          if e.datarow("林种") = "经济林" Then
              e.datarow(e.datacol.name) = e.datarow("设计面积")*20*5
          else
              e.datarow(e.datacol.name) = nothing 
          end if
      end if
else
    e.datarow(e.datacol.name) = nothing 
end if

这样相当于and
if e.datarow("造林类别") = "退耕"
     if e.datarow("林种") = "生态林" Then
满足后再进行下一行的判断!
17楼
易服 发表于:2008/11/19 22:44:00

代码可执行就是不太好理解,14楼是正确的,16楼不行

[此贴子已经被作者于2008-11-19 22:53:00编辑过]
18楼
程兴刚 发表于:2008/11/19 23:25:00
为什么不行?

if e.datarow("造林类别") = "退耕"
     if e.datarow("林种") = "生态林" Then
          e.datarow(e.datacol.name) = e.datarow("设计面积")*20*8
     else
          if e.datarow("林种") = "经济林" Then
              e.datarow(e.datacol.name) = e.datarow("设计面积")*20*5
          else
              e.datarow(e.datacol.name) = nothing 
          end if
      end if
else
    e.datarow(e.datacol.name) = nothing 
end if

14楼的公式:当“造林类别”列不等于“退耕”的时候是否不会有结果(也就是公式所在列不会为空)?您在公式所在列输入内容,然后删除“造林类别”列的内容,计算一下看看结果对不对?

16楼只是增加了一个当 e.datarow("造林类别") 不等于"退耕"的时候,同样执行  e.datarow(e.datacol.name) = nothing   按理说,不应该是错误的!

19楼
易服 发表于:2008/11/20 10:52:00

当造林类别是荒山时不应该有补助(为空)。20为每年的补助标准,生态林补8年、经济林补5年,荒山没有补助。
要的就是14楼的公式:当“造林类别”列不等于“退耕”的时候是否不会有结果,而16楼的都有结果。

20楼
程兴刚 发表于:2008/11/20 12:03:00

没道理的!

if e.datarow("造林类别") = "退耕"
    ... ...
else
    e.datarow(e.datacol.name) = nothing 
end if

共22 条记录, 每页显示 10 条, 页签: [1] [2] [3]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .04688 s, 2 queries.