以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]公式计算判断 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133928) |
-- 作者:seal51 -- 发布时间: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 这段代码好像有问题, 老师帮忙看看
|
-- 作者:有点甜 -- 发布时间:2019/4/23 17:44:00 --
不理解你的意思,报什么错?贴出完整代码。
|
-- 作者:seal51 -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2019/4/23 21:44:00 -- 不用进行判断吗? |
-- 作者:有点蓝 -- 发布时间:2019/4/23 22:30:00 -- 原来的判断代码照常使用,把e.DataRow("zhk") = (d2^2-db^2)/(d2^2-d1^2) 改为4楼的代码,另外一个公式的改法一样,自己照着改 |
-- 作者:seal51 -- 发布时间: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
|
-- 作者:有点甜 -- 发布时间: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 -- 发布时间: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 |
-- 作者:有点甜 -- 发布时间:2019/4/24 10:49:00 -- 不理解你的意思,不明白你要做什么。
如果不想重复触发datacolchanged事件,看看 http://www.foxtable.com/webhelp/scr/2218.htm
|