Foxtable(狐表)用户栏目专家坐堂 → 统计所有列内容完善程度


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

主题:统计所有列内容完善程度

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/22 15:32:00 [显示全部帖子]

根据什么规则统计?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/22 15:48:00 [显示全部帖子]

(iif(第一列 is null,0,1) + iif(第二列 is null,0,1) +...+iif(第十列 is null,0,1) ) / 10

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/22 16:12:00 [显示全部帖子]

如果是表达式,只能这样。如果是代码,遍历所有列,写个循环就行了

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/22 20:09:00 [显示全部帖子]

dim cnt as integer
for each dc as datacol in e.datatable.datacols
cnt += IIF(e.datarow.isnull(dc.name),0,1)
next
e.datarow("完善度") = cnt / 10

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/22 22:13:00 [显示全部帖子]


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/23 8:58:00 [显示全部帖子]

论坛只是给出一个建议和用法,不一定是完整的。如果用到自己的项目中应该按照语法和规则把代码写完整,先理解代码,然后根据语法规则应用到自己的项目中,不要只停留在抄的阶段:http://www.foxtable.com/webhelp/topics/1522.htm

If e.DataCol.Name <> "A" Then
    Dim cnt As Integer   '统计数据的完善度:
    Dim cnt1 As Integer = e.DataTable.DataCols.Count - 1
    For Each dc As DataCol In e.DataTable.DataCols
        If dc.Name <> "A" Then
            cnt += IIF(e.DataRow.isnull(dc.Name),0,1)
        End If
    Next
    e.DataRow("A") = cnt / cnt1
End If

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/23 11:11:00 [显示全部帖子]

既然知道可能没有这个列,那就判断一下是否存在这个列再继续咯

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/23 14:00:00 [显示全部帖子]

DataColChanged

某一列的内容被更改后执行,此时列的内容已经是更改后的值。

e参数属性:

DataTable:返回发生数据更改的数据表。
DataRow:  返回发生数据更改的数据行。
DataCol:  返回发生数据更改的数据列。
NewValue: Object类型,表示新的值。
OldValue: Object类型,表示旧的值


http://www.foxtable.com/webhelp/topics/1428.htm


 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/23 16:18:00 [显示全部帖子]

If e.DataTable.DataCols.Contains("完善比例") Then

 回到顶部