Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

子窗体控件动态显示和隐藏

丁丁  发表于:2008-11-16 19:45:21  
复制

子窗体(数据表)的数据源是来自交叉查询,其中当一列的数据源字段不存在时,这一列总是显示“#名称?”。我想当这一列不存在时,在子窗体把它隐藏了,当它存在时就显示。怎么做?

 

Top
残荷听雨 发表于:2008-11-16 20:19:41

1、子窗体加载事件:将子窗体的字段值赋值给父窗体文本框text0

2、父窗体加载事件:If IsError([text0]) Then  Me.Child0.Visible = False



丁丁 发表于:2008-11-16 21:02:11

还是不行,子窗体是数据表。我在子窗加载事件中:

Private Sub Form_Load()
  Dim ble As Boolean
  Dim i As Integer
            For i = 1 To 21
      
            If IsError(Me.Controls("text" & i)) Then
             Me.Controls("Text" & i).ColumnHidden = -1
            Else
             Me.Controls("Text" & i).ColumnHidden = 0
            End If
            Next i
End Sub

也还是不行,不知道哪点不对。请师傅指点指点!



残荷听雨 发表于:2008-11-16 21:14:31

发个附件上来看看



丁丁 发表于:2008-11-16 22:30:45
残荷听雨 发表于:2008-11-17 11:15:22
打不开,下载不了?

sosopain 发表于:2008-11-17 12:00:34

如果没有其他的需要.直接用交叉查询做子窗体的原对象,不要再用一个窗体.

 

另外微软网站上有个: http://support.microsoft.com/kb/328320/zh-cn "

如何在 Access 2002 中创建动态交叉分析报表"

可以参考一下.

 

 



丁丁 发表于:2008-11-17 14:49:01

如果直接用交叉查询作原对象,则窗体上的一些筛选统计又不得行,真是郁闷。



残荷听雨 发表于:2008-11-17 21:54:17
一点想法,请指正:
    在交叉表查询中,根据列标题各列的值不同列标题在动态变化。因此,在窗体中以交叉表查询作为数据源有着很大的局限性。您在示例中的子窗体里,[33],[34],[42],[43],[44]等五个文本框与数据源的相关字段关联,而这些字段在交叉表中现在不存在(以后可能会存在,但现在这样的窗体本身就是错误的),要使其动态隐藏或显示,缺乏判断的依据。我想这可能是行不通的。
    要想实现交叉表这样的数据统计结果,可以用变通的方法来处理:
    1、设计一个“统计表”作为过渡表(每次窗体加载均更新数据),它的字段包含了交叉表所有可能出现的列;
    2、利用追加、更新查询等将交叉表的结果填写在统计表中;
    3、利用统计表作为数据表子窗体的数据源;
    4、在子窗体页脚中,增加各尺码的总计文本框,在子窗体的加载事件中依据总计数字,对相关文本框(字段)的可见性进行隐藏或显示。

sosopain 发表于:2008-11-18 00:09:19

我也曾经想过这种办法, 但是要在系统编制阶段就考虑到所有可能出现的交叉表字段, 比较难, 因为交叉表的列是动态的, 一旦投入运行了,分发下去,数据量暴增的情况下, 要来调整就很费时了..

 

我目前的解决办法是.子窗体还是用交叉表查询作为原对象,

  1. 筛选. 在父窗体上控制子窗体的filter 和filteron属性来做筛选, 此时的操作和子窗体的源对象是窗体时是一样的.

  2. 统计, 直接在父窗体上调用原始表做统计, 字段列表也可以根据子窗体的recordset获得.

 

如果你用access2007, 就可以利用数据表统计字段来实现.也可以利用access2007强大方便的筛选功能.

 

 



总记录:9篇  页次:1/1 9 1 :