以文本方式查看主题

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

--  作者:317617216
--  发布时间:2022/6/8 11:29:00
--  求助:工程计算式中,统计得出合价,单价如何根据合价与工程量反算得出单价?
求助:
第1个问题:
工程计算式中,统计得出合价,单价如何根据合价与工程量反算得出单价?


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看



第2个问题:
另:  新建行 能不能指定行的类型,

层级列             类型列

1                   部
 1.1               分部
 1.1.1            子目
2                   部
 2.1               分部
 2.1.1            子目



第3个问题:
折叠模式下,如果某一行有子行,那就禁止删除此行,但用下面代码,带子行的行还是给删除了,子行却保留了呢?

im cr As Row = Tables("物料清单A").Current
If  Tables("物料清单A").GridTreeVisible Then
    If cr.HasChild()  Then
        MessageBox.show("此行有子行,无法删除!","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)   
        Return
    End If
End If
cr.Delete()


在表事件中能设置吗?

--  作者:有点蓝
--  发布时间:2022/6/8 11:42:00
--  
1、目前只能汇总,无法计算

2、在折叠模式下新增即可:http://www.foxtable.com/webhelp/topics/3721.htm

3、我测试没有问题

--  作者:狐狸爸爸
--  发布时间:2022/6/8 11:43:00
--  
第一个问题,可以考虑DrawCell事件,代码:

If e.Col.Name = "单价" Then
    e.Text = e.Row.GetValue("金额") / e.Row.GetValue("数量")
End If

--  作者:317617216
--  发布时间:2022/6/8 11:45:00
--  
谢谢
--  作者:317617216
--  发布时间:2022/6/8 12:08:00
--  
以下是引用狐狸爸爸在2022/6/8 11:43:00的发言:
第一个问题,可以考虑DrawCell事件,代码:

If e.Col.Name = "单价" Then
    e.Text = e.Row.GetValue("金额") / e.Row.GetValue("数量")
End If



\'调用的目标发生了异常。
\'没有为 类型“Double” 和 类型“DBNull” 定义运算符“ / ”。



--  作者:有点蓝
--  发布时间:2022/6/8 12:11:00
--  
判断一下金额和数量是否有值,再计算
--  作者:狐狸爸爸
--  发布时间:2022/6/8 15:19:00
--  
可以直接用的代码:

If e.Row.Hierarchy >= 0 AndAlso e.Col.Name = "单价" Then
    If e.Row.GetValue("金额") IsNot dbnull.Value AndAlso e.Row.GetValue("数量") IsNot dbnull.value Then
        e.Text = e.Row.GetValue("金额") / e.Row.GetValue("数量") 
    End If 
End If

--  作者:建筑人生
--  发布时间:2022/6/10 9:59:00
--  
可以增加一列合价还是单价,如果合价就反算,单价就正算


--  作者:317617216
--  发布时间:2022/6/23 18:36:00
--  
以下是引用狐狸爸爸在2022/6/8 15:19:00的发言:
可以直接用的代码:

If e.Row.Hierarchy >= 0 AndAlso e.Col.Name = "单价" Then
    If e.Row.GetValue("金额") IsNot dbnull.Value AndAlso e.Row.GetValue("数量") IsNot dbnull.value Then
        e.Text = e.Row.GetValue("金额") / e.Row.GetValue("数量") 
    End If 
End If

列本身是表达式列,属性设置了为2位小数,这样代码后的列小数位就不固定了??


--  作者:有点蓝
--  发布时间:2022/6/23 20:17:00
--  
e.Text = round(e.Row.GetValue("金额") / e.Row.GetValue("数量") ,2)