以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  有规律的隐藏列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=171279)

--  作者:cd_tdh
--  发布时间:2021/8/25 9:56:00
--  有规律的隐藏列

老师,我一个表,做垂直表在转换确实太麻烦,就做的水平表,我打开表时,隐藏所有结算情况(第1-24期)的列,筛选出分包队伍时,隐藏已经计算的期数列,比如张三,隐藏1-3期结算的列,显示4期的列,隐藏5-24期的列,,李四,隐藏1-2期结算的列,显示3期的列,隐藏4-24期的列,怎么来写呢,做了个示例,请老师看看?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

[此贴子已经被作者于2021/8/25 10:45:53编辑过]

--  作者:有点蓝
--  发布时间:2021/8/25 10:02:00
--  
隐藏列参考:http://www.foxtable.com/webhelp/topics/0572.htm


--  作者:cd_tdh
--  发布时间:2021/8/25 10:09:00
--  

老师,挨个判断在隐藏我知道,这样太繁琐,结算情况我是按照第1、第2.....第24期这样命名的,有什么简单点的方法不。

需要判断已经结算的最大期数,结算了的不隐藏,未结算的第1期不隐藏,后面的隐藏

[此贴子已经被作者于2021/8/25 10:16:41编辑过]

--  作者:有点蓝
--  发布时间:2021/8/25 10:15:00
--  
合成列名,比如

for i as integer = 1 to 24
msgbox("" & i & "")
Tables("订单").Cols("" & i & "").Visible = False
next

--  作者:cd_tdh
--  发布时间:2021/8/25 10:18:00
--  
怎么判断已经结算的最大期数呢?
[此贴子已经被作者于2021/8/25 10:19:54编辑过]

--  作者:有点蓝
--  发布时间:2021/8/25 10:35:00
--  
怎么样才算是:已经结算的最大期数?
--  作者:cd_tdh
--  发布时间:2021/8/25 10:45:00
--  

例如示例里面,张三已结算的最大期数为第3期,李四为第2期

在筛选张三的时候,计量期数就只显示第4期,筛选出李四时,计量期数就只显示第3期,其余结算期数都不显示

1楼上传了示例

[此贴子已经被作者于2021/8/25 10:45:04编辑过]

--  作者:有点蓝
--  发布时间:2021/8/25 10:57:00
--  
遍历所有列,判断这列是否有数据
--  作者:cd_tdh
--  发布时间:2021/8/25 11:31:00
--  

请老师给写一下,看该怎么写呢,代码写到增加结算期数的一个按钮里面的

If e.Form.Controls("项目名称").value = "" Then
    e.Cancel = True
    msgbox("请先选择项目名称")
    If e.Form.Controls("分包队伍").value = "" Then
        e.Cancel = True
        msgbox("请先选择需要结算的分包队伍")
    Else
        For Each dc As Col In Tables("分包结算表").Cols

           
           
            Tables("分包结算表").Cols("第4期数量").Visible = True   \'找到本期要结算的期数显示
            Tables("分包结算表").Cols("第4期合价").Visible = True   \'找到本期要结算的期数显示

            Tables("分包结算表").Cols("第4期数量").Move(7) \'移动列到制定位置
            Tables("分包结算表").Cols("第4期合价").Move(8) \'移动列到制定位置
            
        Next
    End If
End If


--  作者:有点蓝
--  发布时间:2021/8/25 11:37:00
--  

        For Each dc As Col In Tables("分包结算表").Cols

if dc.name like "第*" then

           if Tables("分包结算表").compute("count(" & dc.name & ")", dc.name & " is not null") = 0 then

dc.Visible =false

else

dc.Visible =true

endif

endif

        Next