Office中国论坛/Access中国论坛

标题: [请教专家]如何实现子窗体根据组合框内容动态显示? [打印本页]

作者: lfffirst    时间: 2009-2-10 14:24
标题: [请教专家]如何实现子窗体根据组合框内容动态显示?
请教各位专家,现有一主窗体,一组合框,一子窗体。
     如何根据组合框中绑定的各表名,在子窗体中动态显示相应表的内容呢?

谢谢各位了!!!
作者: todaynew    时间: 2009-2-10 14:26
本帖最后由 todaynew 于 2009-2-10 14:34 编辑

更换子窗体数据源

Private Sub Combo0_BeforeUpdate(Cancel As Integer)
    Me.子窗体控件名称.Form.RecordSource = Combo0.Value
End Sub
作者: Trynew    时间: 2009-2-10 14:36
[attach]34979[/attach]
动态建立一个查询,使用这个查询作为子窗体
作者: tz-chf    时间: 2009-2-10 16:16
更换子窗体数据源

Private Sub Combo0_BeforeUpdate(Cancel As Integer)
    Me.子窗体控件名称.Form.RecordSource = Combo0.Value
End Sub
todaynew 发表于 2009-2-10 14:26

只改数据源,控件都不用绑定?
作者: todaynew    时间: 2009-2-10 16:21
只改数据源,控件都不用绑定?
tz-chf 发表于 2009-2-10 16:16


呵呵,就是。搞个引号不知道行否?
作者: lfffirst    时间: 2009-2-10 16:28
显示记录集的通用窗体.rar (92.88 KB)
动态建立一个查询,使用这个查询作为子窗体

你好,谢谢你的回复。但是你给我的示例并不能动态显示组合框的内容阿。
作者: lfffirst    时间: 2009-2-10 16:35
更换子窗体数据源
Private Sub Combo0_BeforeUpdate(Cancel As Integer)
    Me.子窗体控件名称.Form.RecordSource = Combo0.Value
End Sub

谢谢你的解答,但我希望是组合框选择内容是表的名字,子窗体显示相应表的所有字段内容。
作者: todaynew    时间: 2009-2-10 16:42
谢谢你的解答,但我希望是组合框选择内容是表的名字,子窗体显示相应表的所有字段内容。
lfffirst 发表于 2009-2-10 16:35


呵呵,我已经遭到元老同志的严厉批评了,代码写的不对。

好像应该这样写:
Private Sub Combo0_BeforeUpdate(Cancel As Integer)
    dim sql as string
    sql="select * from  " & Combo0.Value
    Me.子窗体控件名称.Form.RecordSource = sql
End Sub

不知道可不可以,没有测试过,你试试。
作者: ACMAIN_CHM    时间: 2009-2-10 16:53
在字窗体中,先添加256个textbox001 to textbox256 ,

在combox的事件中,打开对应表的 recordset,然后根据 fields来设置各个textbox的绑定ControlSource
对没有绑定的 text012-text256 (假设只有11列在这个表中)进行columnhide隐藏。

简单点就换MSFlexibGrid算了。


******************
*  一切皆有可能  *
******************

.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/SList/Access .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .
作者: lfffirst    时间: 2009-2-10 16:58
Private Sub Combo0_BeforeUpdate(Cancel As Integer)
    dim sql as string
    sql="select * from  " & Combo0.Value
    Me.子窗体控件名称.Form.RecordSource = sql

赫赫 感谢各位元老  但是还是不行,提示错误代码为2467 最后一句执行错误
作者: lfffirst    时间: 2009-2-10 17:01
显示记录集的通用窗体.rar (92.88 KB)
动态建立一个查询,使用这个查询作为子窗体

这位专家的方法不错,但是我不知道他的事列错在那里了,组合框事件程序代码有点问题
作者: Trynew    时间: 2009-2-10 18:33
是你不会用有问题,还是我的实例出错?在我的机子测试可用,可以在列表框中显示选取当前数据库全部表和查询并在子窗体中显示编辑表或查询的内容。
估计你是列表框的绑定列为编号而不是显示的表名,改列表框的绑定列为2试试。
作者: koutx    时间: 2009-2-10 18:34
三楼的例库我运行了完全没有问题。
只是楼主的这种思路不知在业务编程中有多少实用意义。
作者: lfffirst    时间: 2009-2-10 19:56
三楼的例库我运行了完全没有问题。
只是楼主的这种思路不知在业务编程中有多少实用意义。

回家中文版2003运行三楼朋友的例库的确没问题了   在公司英文版的2003运行就有问题
应为我的表非常多,数据结构比较乱,所以很难用查询全部解决,只能依靠表来整理数据

不管批评还是疑问,感谢所有朋友,这个平台很好,学习之路,见笑.
作者: lfffirst    时间: 2009-2-10 20:49
本帖最后由 lfffirst 于 2009-2-10 20:51 编辑

采用三楼专家的示例程序后,为什么有些表内容在子窗体中会无法显示,有些又可以.
可能的原因有什么呢?  
还有如何可以缩小表的范围,而不是一下子显示全部表名?也就是说只添加一部分表进来

请教各位大侠&专家,小弟再次拜谢了!
作者: tz-chf    时间: 2009-2-10 21:04
本来就不适合用子窗体来做,建议导出到excel
作者: lfffirst    时间: 2009-2-10 22:42
本来就不适合用子窗体来做,建议导出到excel


多谢元老的指点,请问这个思路真的没有办法继续了吗?
觉得子窗体直接显示会美观简洁一点
小弟菜鸟级思路有些偏颇,但仍希望能把它完成. 拜谢!
作者: Henry D. Sy    时间: 2009-2-11 05:54
赫赫 感谢各位元老  但是还是不行,提示错误代码为2467 最后一句执行错误
lfffirst 发表于 2009-2-10 16:58

你至少应该把自己的例子传上来
作者: Trynew    时间: 2009-2-11 12:26
那就只用一句话:
Private Sub Combo0_AfterUpdate()
Me.Child2.SourceObject = "表." & Combo0
End Sub
如果想显示查询,组合框再增加一列“type”进行判断
作者: 345778796    时间: 2009-5-13 18:44
...




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