Foxtable(狐表)用户栏目专家坐堂 → [求助]公式计算判断


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

主题:[求助]公式计算判断

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13012 威望:0 精华:0 注册:2013/6/10 9:23:00
[求助]公式计算判断  发帖心情 Post By:2019/4/23 16:52:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name 
    Case "db"
        If dr.IsNull("db") Then '如果db为空
            dr("zhk") = Nothing
        Else
            e.DataRow("zhk") = (d2^2-db^2)/(d2^2-d1^2) 
        End If
   Case "dbfs"
        If dr.IsNull("dbfs") Then '如果dbfs为空
            dr("fzhk") = Nothing
        Else
            e.DataRow("fzhk") = (dbfs^2-d1^2)/(d2^2-d1^2) 
        End If
End Select

这段代码好像有问题, 老师帮忙看看

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/23 17:44:00 [只看该作者]

 

不理解你的意思,报什么错?贴出完整代码。

 

 


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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13012 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2019/4/23 18:00:00 [只看该作者]

如果db列的值为空,为0, 则公式  e.DataRow("zhk") = (d2^2-db^2)/(d2^2-d1^2) 不进行计算
如果dbfs列的值为空,为0, 则公式 e.DataRow("fzhk") = (dbfs^2-d1^2)/(d2^2-d1^2) 不进行计算
[此贴子已经被作者于2019/4/23 18:02:17编辑过]

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


加好友 发短信
等级:超级版主 帖子:111471 积分:567443 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/23 20:12:00 [只看该作者]

e.DataRow("zhk") = (e.DataRow("d2")^2-e.DataRow("db")^2)/(e.DataRow("d2")^2-e.DataRow("d1")^2) 

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13012 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2019/4/23 21:44:00 [只看该作者]

不用进行判断吗?

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


加好友 发短信
等级:超级版主 帖子:111471 积分:567443 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/23 22:30:00 [只看该作者]

原来的判断代码照常使用,把e.DataRow("zhk") = (d2^2-db^2)/(d2^2-d1^2) 改为4楼的代码,另外一个公式的改法一样,自己照着改

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13012 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2019/4/24 8:21:00 [只看该作者]

下面是整段代码, 现在的问题: 1. 如果数据都填写, 那么第一个公式不计算, 第二个公式计算, 2.重置列原来的数据没有发生变化(没有加判断的时候计算的数据)

Dim d1 = e.DataRow("d1") 
Dim d2 = e.DataRow("d2") 
Dim db = e.DataRow("db")
Dim dbfs = e.DataRow("dbfs") 
Dim zhk = e.DataRow("zhk") 
Dim fzhk = e.DataRow("fzhk") 

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name 
    Case "db"
        If dr.IsNull("db") Then '如果db为空
            dr("zhk") = Nothing
        Else
            e.DataRow("zhk") = (d2^2-db^2)/(d2^2-d1^2) 
        End If
   Case "dbfs"
        If dr.IsNull("dbfs") Then '如果dbfs为空
            dr("fzhk") = Nothing
        Else
            e.DataRow("fzhk") = (dbfs^2-d1^2)/(d2^2-d1^2) 
        End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/24 9:18:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "d1", "d2", "db", "dbfs"
        Dim d1 = e.DataRow("d1")
        Dim d2 = e.DataRow("d2")
        Dim db = e.DataRow("db")
        Dim dbfs = e.DataRow("dbfs")
        Dim zhk = e.DataRow("zhk")
        Dim fzhk = e.DataRow("fzhk")
        If dr.IsNull("db") Then '如果db为空
            dr("zhk") = Nothing
        Else
            e.DataRow("zhk") = (d2^2-db^2)/(d2^2-d1^2)
        End If       
        If dr.IsNull("dbfs") Then '如果dbfs为空
            dr("fzhk") = Nothing
        Else
            e.DataRow("fzhk") = (dbfs^2-d1^2)/(d2^2-d1^2)
        End If
End Select

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


加好友 发短信
等级:八尾狐 帖子:1838 积分:13012 威望:0 精华:0 注册:2013/6/10 9:23:00
  发帖心情 Post By:2019/4/24 9:52:00 [只看该作者]

下面是整套代码, 其中部分判断, 按上楼修改, 对其他计算有影响, 如何做?

Dim d1 = e.DataRow("d1") 
Dim d2 = e.DataRow("d2") 
Dim db = e.DataRow("db") 
Dim dbfs = e.DataRow("dbfs")
Dim mja = e.DataRow("mja") 
Dim zhk = e.DataRow("zhk") 
Dim fzhk = e.DataRow("fzhk")
Dim G = e.DataRow("G") 
Dim Dm = e.DataRow("Dm") 
Dim d = e.DataRow("d") 
Dim coil = e.DataRow("coil") 
Dim gdk = e.DataRow("gdk") 
Dim zygd = e.DataRow("zygd") 
Dim gzgd = e.DataRow("gzgd") 
Dim thysl = e.DataRow("thysl") 
Dim thgs = e.DataRow("thgs") 
Dim ysb = e.DataRow("ysb") 
Dim ps = e.DataRow("ps")
Dim fs = e.DataRow("fs")
Dim wave = e.DataRow("wave") 
Dim s = e.DataRow("s") 
Dim v = e.DataRow("v") 
Dim r = e.DataRow("r") 
Dim p = e.DataRow("p") 
Dim Pc = e.DataRow("Pc")
Dim vl = e.DataRow("vl") 

e.DataRow("mja") = (d2^2-d1^2)/4*3.14
e.DataRow("zhk") = (d2^2-db^2)/(d2^2-d1^2)
e.DataRow("fzhk") = (dbfs^2-d1^2)/(d2^2-d1^2) 
e.DataRow("gdk") = G*Dm/(8*(Dm^4/d^4)*coil) 
e.DataRow("ysb") = 1-thysl/zygd 
e.DataRow("ps") = (gdk*thysl*thgs)/mja 
e.DataRow("v") = 3.14*((d2/1000)+(d1/1000))*(s/120) 
e.DataRow("pc") = ps+p*(zhk-r) 
e.DataRow("vl") = pc*v 
e.DataRow("thysl") = zygd-gzgd 
e.DataRow("fs") = gdk*thysl*thgs 

If e.DataCol.name = "zhk"
e.DataRow("ABCD") = IIF(e.newvalue >= 1,"XS1","XS2")
e.DataRow("zhpd") = IIF(e.DataRow("zhk")>1.5,"过高",iif(e.DataRow("zhk")>= 0.6, "正常","过低"))
End If

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/24 10:49:00 [只看该作者]

不理解你的意思,不明白你要做什么。

 

如果不想重复触发datacolchanged事件,看看 http://www.foxtable.com/webhelp/scr/2218.htm

 


 回到顶部
总数 12 1 2 下一页