以文本方式查看主题

-  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=31989)

--  作者:ilacs14
--  发布时间:2013/4/24 9:00:00
--  [求助]求助表达式问题
B表设置与A表按部门列关联,表A中有部门列,a数据列;B表中有部门列,b数据列,表达式列。但是想实现如下功能:
情况1:假设B表中部门列=外一科,A表中部门列=外一科那行的a数据列不为0,则表达式结果为相应的 a数据列*b数据列;
情况2:假设B表中部门列=120,A表中部门列=120那行的a数据列为0,则表达式结果为 a数据列(值为A表 部门=门急诊 这行的a数据值)*b数据列
不知道公式该怎么来写了,麻烦帮帮忙,谢谢
[此贴子已经被作者于2013-4-24 9:00:20编辑过]

--  作者:Bin
--  发布时间:2013/4/24 9:08:00
--  
1.外一科那行的a数据列不为0,则表达式结果为相应的 a数据列*b数据列; 为0的话怎么处理?
2.表达式无法实现必须用代码.

--  作者:XYT
--  发布时间:2013/4/24 9:09:00
--  
如果你要先判断 B表的部门和A部门对应的列就不能用单纯用表达式,要用代码才行
--  作者:ilacs14
--  发布时间:2013/4/24 9:33:00
--  
以下是引用Bin在2013-4-24 9:08:00的发言:
1.外一科那行的a数据列不为0,则表达式结果为相应的 a数据列*b数据列; 为0的话怎么处理?
2.表达式无法实现必须用代码.

谢谢哈,我是举例,主要是想用一个公式实现情况1跟情况2两种情况的计算。
用代码实现的话,该怎么写呢?代码在哪写呢?麻烦帮下忙谢谢


--  作者:ilacs14
--  发布时间:2013/4/24 9:37:00
--  
以下是引用XYT在2013-4-24 9:09:00的发言:
如果你要先判断 B表的部门和A部门对应的列就不能用单纯用表达式,要用代码才行
请问用代码该怎么实现呢?


--  作者:Bin
--  发布时间:2013/4/24 9:39:00
--  
写在DataCloChanged事件中.
则表达式结果为 a数据列(值为A表 部门=门急诊 这行的a数据值) 120 A数据列 等于 门急诊 A数据列?

--  作者:ilacs14
--  发布时间:2013/4/24 9:42:00
--  
以下是引用Bin在2013-4-24 9:39:00的发言:
写在DataCloChanged事件中.
则表达式结果为 a数据列(值为A表 部门=门急诊 这行的a数据值) 120 A数据列 等于 门急诊 A数据列?



对,相当于A表中 部门=120 这行的a数据列为0时,在B表中计算时,调取A表中 部门=门急诊 这行的a数据列值


--  作者:Bin
--  发布时间:2013/4/24 9:44:00
--  
以下是引用ilacs14在2013-4-24 9:42:00的发言:

那你A表 部门为120的行意义何在? 怎么感觉很混乱的样子.
--  作者:ilacs14
--  发布时间:2013/4/24 9:47:00
--  
额是我整复杂了,我是为了方便举例,不好意思哈。其实更多情况应该是A表中没有 部门=120这行数据。。。那么B表计算 部门=120 这行的值时,调用A表 部门=门急诊的数据来计算
--  作者:Bin
--  发布时间:2013/4/24 10:01:00
--  
那就在B表的 DataCloChanged事件中
if e.dataCol.Name="B数据列" andalso e.datarow("部门")="120" then
  dim dr as datarow = datatables("A表").Find("部门-门急诊")
  if e.datarow("B数据列") <> 0 andalso dr("A数据列") <> 0 then
     e.datarow("表达式列")=e.datarow("B数据列")*dr("A数据列")
  end if
end if