Office中国论坛/Access中国论坛

标题: SplitForm中如何隐藏列? [打印本页]

作者: lazybird    时间: 2018-11-28 13:23
标题: SplitForm中如何隐藏列?
在数据表格式中可以用ColumnHidden的方法将列隐藏起来,例如:
Me.Form.Controls("XXX1").ColumnHidden = True

将窗体改成SplitForm(上面窗体,下面数据表)之后,用同样的方法隐藏不了了。
求解决方法。


作者: cgsilicone    时间: 2018-11-28 13:23
不知道你为什么要这样设计窗体,有更好的设计方式。
按你的设想是可以实现的,有些麻烦。
1、ColumnHidden 起作用只能在 Form_Open,所以需要好好设计你的Form_Open
2、在需要改变ColumnHidden的地方,触发 Form_Open,简单简单代码如下:

Private Sub Command1_Click()
    开关 = True
    DoCmd.OpenForm "窗体1", acFormDS
    DoCmd.OpenForm "窗体1", acNormal
End Sub

Private Sub Command2_Click()
   开关 = False
   DoCmd.OpenForm "窗体1", acFormDS
   DoCmd.OpenForm "窗体1", acNormal
End Sub


Private Sub Form_Open(Cancel As Integer)
Me.Form.Controls("列1").ColumnHidden = 开关
End Sub

当然还需要在模块中加入:Public 开关 As Boolean

作者: lazybird    时间: 2018-11-28 22:46
没人回答 。。。   
不知道是不是没有说清楚问题,上传附件说明下。
求大师快现身指导

作者: 六月雪    时间: 2018-11-29 10:07
最简单方法:用系统自带的隐藏显示列  DoCmd.RunCommand acCmdUnhideColumns
作者: 六月雪    时间: 2018-11-29 10:11
隐藏列

作者: 六月雪    时间: 2018-11-29 10:12
系统自带的隐藏显示列

作者: lazybird    时间: 2018-11-29 10:13
六月雪 发表于 2018-11-29 10:07
最简单方法:用系统自带的隐藏显示列  DoCmd.RunCommand acCmdUnhideColumns

这个解决不了问题,弹出来一个窗口还是要用户自己勾选。
我的应用场景是这样的 - 根据筛选条件自动隐藏和现实对应的很多个列,这样用户不用自己去勾选,
一是浪费时间,二是会选错。
作者: admin    时间: 2018-11-29 14:56
可以用父子窗体 代替
作者: lazybird    时间: 2018-11-30 09:29
admin 发表于 2018-11-29 14:56
可以用父子窗体 代替

是的,目前用的就是父子窗体。
在升级软件时为了精简代码改用分割窗体结果碰到这问题了。

作者: lazybird    时间: 2018-11-30 09:42
cgsilicone 发表于 2018-11-28 13:23
不知道你为什么要这样设计窗体,有更好的设计方式。
按你的设想是可以实现的,有些麻烦。
1、ColumnHidde ...

谢谢了,困扰了几天的问题虽然没有完美解决,但已经是目前知道的“最佳答案”了。
不知道您说的“更好的设计方式”是指什么?

之前用的父子窗体模式,对列可以用代码自由控制没有问题。
后来发现分割窗体有许多优势,窗体和代码都少了,只加载一个窗体速度也更快。
作者: cgsilicone    时间: 2018-11-30 13:03
lazybird 发表于 2018-11-30 09:42
谢谢了,困扰了几天的问题虽然没有完美解决,但已经是目前知道的“最佳答案”了。
不知道您说的“更好的 ...

不知道你的具体要求,但一定有多种方法实现。
具体到你现在的这个隐藏列的问题,在子窗体控件里放查询表(不是放窗体)就是一个好的选择。
设计好查询表,只用要显示的列生成查询表,就完全没有需要隐藏的问题。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3