none
如何在计算列默认值中使用数学函数? RRS feed

  • 问题

  • 在数据集中,为某表添加一计算列,其表达式为:FLOOR(1000/(Qk+Hk))*2+FLOOR((1000-FLOOR(1000/(Qk+Hk))*(Qk+Hk))/MAX(Qk,Hk)),但系统显示无效,该如何使用数学函数呢?

     


    韩立学
    2011年6月8日 6:47

答案

  • 你的意思是在DataTable的DataColumn中设定Express计算列?

    就我知道而言,计算列只能设置一些简单的聚合函数(比如sum什么的),像你的Floor恐怕是不可以的。

    我的意思是——你通过后台编码,触发“ColumnChanged”事件来完成——

    【示例代码】

    public void dt_ColumnChanged(object sender, DataColumnChangeEventArgs e)
            {
                //如果修改的是QK或者是Hk的某个列,那么
                if (e.Column.ColumnName == "Qk" || e.Column.ColumnName == "Hk")
                {
                    e.Row["某个字段名称"] = Math.Floor((int)e.Row["Qk"] + (int)e.Row["Hk"] / 2.0);
                }
            }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处

    • 已标记为答案 大海怪 2011年6月8日 6:58
    2011年6月8日 6:54
    版主

全部回复

  • 你的意思是在DataTable的DataColumn中设定Express计算列?

    就我知道而言,计算列只能设置一些简单的聚合函数(比如sum什么的),像你的Floor恐怕是不可以的。

    我的意思是——你通过后台编码,触发“ColumnChanged”事件来完成——

    【示例代码】

    public void dt_ColumnChanged(object sender, DataColumnChangeEventArgs e)
            {
                //如果修改的是QK或者是Hk的某个列,那么
                if (e.Column.ColumnName == "Qk" || e.Column.ColumnName == "Hk")
                {
                    e.Row["某个字段名称"] = Math.Floor((int)e.Row["Qk"] + (int)e.Row["Hk"] / 2.0);
                }
            }


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处

    • 已标记为答案 大海怪 2011年6月8日 6:58
    2011年6月8日 6:54
    版主
  • 谢谢!vs也有局限性啊!
    韩立学
    2011年6月8日 6:58