Foxtable(狐表)用户栏目专家坐堂 → 表达式转计算代码


  共有31122人关注过本帖树形打印复制链接

主题:表达式转计算代码

帅哥哟,离线,有人找我吗?
程兴刚
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By: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事件中!


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By: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
满足后再进行下一行的判断!

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By: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   按理说,不应该是错误的!


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2008/11/20 12:03:00 [显示全部帖子]

没道理的!

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


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2008/11/20 12:05:00 [显示全部帖子]

楼主似乎是忽略了18楼的这一段,敬请测试:

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


 回到顶部