以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]计算非重复值的行数  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=184845)

--  作者:沪上游客
--  发布时间:2023/1/9 15:25:00
--  [求助]计算非重复值的行数
老师您好!
如下图:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20230109151504.jpg
图片点击可在新窗口打开查看

如果Tables(不是DataTables)中列“主合同编号”中多行只有一个主合同编号(重复或单个),那么加载指定关联表,否则不加载。
相当于排除重复值后行数等于1就加载,否则不加载关联表。
请问代码怎么写?写在那个表事件?

我的AfterLoad 表事件代码如下:
Tables("支出合同基础数据").Sort = "财务编号"
e.DataTable.LoadChildren("支出合同收支表")
e.DataTable.LoadChildren("支出合同印花税统计表")
e.DataTable.LoadChildren("支出合同补充或决算")
e.DataTable.LoadChildren("支出合同研发成本")
DataTables("支出合同基础数据").DataCols("乙方单位名称").RaiseDataColChanged()
DataTables("支出合同基础数据").Save()
With Tables("支出合同基础数据")
    .MergeMode = MergeModeEnum.Standard
    .MergeCols.Clear()
    .MergeCols.Add("主合同编号")
    .MergeCols.Add("财务编号")
    .MergeCols.Add("工程名称")
    .MergeSort = "主合同编号,财务编号,工程名称"
    .AllowMerge = True
End With
[此贴子已经被作者于2023/1/9 15:36:36编辑过]

--  作者:有点蓝
--  发布时间:2023/1/9 15:55:00
--  
没理解上面的意思。

比如上面表格20行数据,都是同一个主合同编号的就加载子表数据?

--  作者:沪上游客
--  发布时间:2023/1/11 11:57:00
--  
对的,是这个意思,谢谢老师,代码怎么写?
--  作者:有点蓝
--  发布时间:2023/1/11 12:06:00
--  
参考:http://www.foxtable.com/webhelp/topics/2712.htm

Tables("支出合同基础数据").RepeatFilter("主合同编号"3)
if Tables("支出合同基础数据").rows.count > 1 then
msgbox("有多个主合同编号")
else
加载子表数据的代码
end if

--  作者:沪上游客
--  发布时间:2023/1/14 12:01:00
--  
老师你好!
这样的话,每次加载,“支出合同基础表”表只显示唯一值,有没有直接计算唯一值的数值(也就是上面代码执行后的行数)>1的代码?
以前我做过是在窗口的,设置两个表,一表是隐藏计算,另一个表是显示。
谢谢老师!
[此贴子已经被作者于2023/1/14 12:04:46编辑过]

--  作者:沪上游客
--  发布时间:2023/1/14 12:12:00
--  
如果没有的话,那只能在共有窗口加一个隐藏表,就设置一列“主合同编号”,同步加载后计算,这样能行吗?
[此贴子已经被作者于2023/1/14 12:21:27编辑过]

--  作者:有点蓝
--  发布时间:2023/1/14 13:10:00
--  
if DataTables("支出合同基础数据").getvalues("主合同编号").count > 1 then
--  作者:沪上游客
--  发布时间:2023/1/14 19:30:00
--  
谢谢蓝老师!图片点击可在新窗口打开查看