Access交流中心

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

窗体品种字段按类别显示,总是出现空白只为什么

韩云  发表于:2012-06-13 18:45:42  
复制

在子窗体中,让原料品种按类别显示,但是,在关闭以后,等再次打开需要补充添加新纪录时,点击类别以后,原料品种字段中总是会出现空白的,当关闭以后再重新打开时,显示正常。这是为什么,该如何解决?分类显示的代码是:

Private Sub 原料类别_AfterUpdate()
Me.原料品种.RowSource = "SELECT 原料品种ID, 原料品种,类别,终止 FROM 原料品种表 WHERE 原料品种表.类别=" & Me.原料类别 & " AND 原料品种表.终止=False ORDER BY 原料品种表.原料品种;"

End Sub

 

Top
风行 发表于:2012-06-13 20:57:21

原料品种表.类别 是文本型还是数值型

还要加上me.原料品种.requery



浪淘沙 发表于:2012-06-13 22:45:02

这是一个常见问题,原料品种组合框属性中绑定列是原料品种ID,但该列列宽一般是0cm被隐藏的,所以显示的是第二列原料品种的文本名称。现在部分"原料品种ID"对应的"原料品种"在组合框的更新事件中被过滤掉了,所以无法被翻译出来,故变成空白了,但数据还是存在的。

 

Me.原料品种.RowSource = "SELECT 原料品种ID, 原料品种,类别,终止 FROM 原料品种表 WHERE 原料品种表.类别=" & Me.原料类别 & " AND 原料品种表.终止=False ORDER BY 原料品种表.原料品种;"

 

就是事件中这段红色的代码减少了组合框里的列表行数,导致部份的ID缺少了对应的列表值,例如上图中当过滤条件"原料类别"在更新事件中为"面料类"时,非面料类的原料品种ID就无法被组合框识别翻译出来。重新打开窗体时又回到原来的RowSource属性,所以显示正常。

 

如果要全部显示,就不能用更新事件过滤减少组合框Me.原料品种.RowSource的列表行数。但不过滤的话,显示的选项列表行数会很多,不利于高效选择。这里是一对矛盾。

解决方案:

如果选项不是很多,去除更新后事件不要过滤选项即可,组合框有个自带功能:在组合框中直接键入名称的部份字段也可以快速检索到目标选项。

如果选项很多很杂记不住但要提高选项效率,提供参考方案如下

1.首先放弃在子窗体中直接新增数据

2.去除原料类别_AfterUpdate事件,保证所有ID都能被识别。

3.在主窗体上添加一套选项控件,对应子窗体的各字段,提供便利高效的选项设置,这里需要用到原料类别_AfterUpdate()事件来缩小原料品种选项范围便于选择,选好后通过按钮事件添加新数据到数据表后再刷新子窗体。

 

  难得写这么多字,还是上传实例直接修改比较简单~~。



韩云 发表于:2012-06-14 08:26:03
现将附件上传,希望各位高手能够在不改变界面格式的情况下,给出一个较为完美的解决办法来。点击下载此附件

cspa 发表于:2012-06-14 13:09:21
同意,浪淘沙军长的分析,目前这个界面设计存在逻辑缺陷,如果不改很难完美解决。此界面作为进料单的查询显示、修改是可以的。如作为补充添加新纪录的窗口,建议打开时将字段全部清空,以空窗口的形式出现,也就不会出现“原料品种字段中总是会出现空白的”的现象了。

韩云 发表于:2012-06-15 07:05:02
楼上说的这种将原来的字清空之办法不好,目前的界面主要是考虑日常使用的操作便利,一般是在板房将产品的使用原料核准以后进行填写的,这期间有时候会出现要补填一些项目内容来完善,如果按楼上的办法,反而更麻烦了。希望高手们能找出一个两全其美的办法来。

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