Access交流中心

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

在窗体A_Form的控件中设置另一个窗体B_Form的子窗体B_Child的数据源

jianju  发表于:2014-08-27 10:41:41  
复制

在窗体A_Form的控件Search中设置另一个窗体B_Form的子窗体B_Child的数据源.代码如下

'A_Form的Search控件对应的代码

Private Sub Main_Search_Click()

.....

......

strSQL=...

DoCmd.OpenForm "B_Form"
B_Form.B_Child.Form.RecordSource = strSQL
B_Form.Refresh

end sub

我把标黄的地方改成:

DoCmd.OpenForm "B_Form"
Me.B_Child.Form.RecordSource = strSQL
Me也不对.Refresh

标黄的地方一直报错,求大神指点? 有没有关于窗体VBA的教程,最近在看这个好多问题啊.非常感谢啊

 

Top
麥田 发表于:2014-08-27 13:43:24
【Access源码示例】切换获取不同子窗体的合计数\切换子窗体数据源示例\动态设置子窗体数据源[Access软件网]
http://www.accessoft.com/article-show.asp?id=7928


jianju 发表于:2014-08-27 16:19:48

谢谢您的回复,附件中的方法有点复杂,可以仅修改上面程序的句子达到目的吗:

DoCmd.OpenForm "B_Form"
B_Form.B_Child.Form.RecordSource = strSQL
B_Form.Refresh

end sub

我把标黄的地方改成:

DoCmd.OpenForm "B_Form"
Me.B_Child.Form.RecordSource = strSQL
Me也不对.Refresh

谢谢啊!



煮江品茶 发表于:2014-08-29 15:24:02

一、可以这样修改:

DoCmd.OpenForm "B_Form"

dim frm as form

dim strsql as string

strsql="select * from 某个表或查询 where 条件"

set frm=forms("B_Form")
frm.controls("子窗体控件名").form.filter=strsql

二、窗体对象的书写方法:
"B_Form"的子窗体,除了以上的写法外,大概还有这么几种写法:
frm!子窗体控件名.form
frm.子窗体控件名.form

三、me与Forms的含义

me表示当前窗体(严格一些实际是表示当前类),所以me上是不存在B_Child子窗体控件的。B_Form.B_Child只是me.B_Form.B_Child的简写,所以也是找不到B_Form和B_Form.B_Child的。唯一能找到B_Form窗体的写法是Forms("B_Form"),其中Forms表示所有打开窗体的集合。


四、打开窗体直接窗体筛选参数的两种方法:

1、可以在DoCmd.OpenForm语句中直接传递对主窗体的筛选字符串,这个参数位于第四个,比如:DoCmd.OpenForm "B窗体",,,"订单ID=" & me.订单ID

2、如果对打开窗体的子窗体进行筛选,也可以在DoCmd.OpenForm最后一个(第7个参数)参数中窗体一个变量(可以任意类型的变量)。这个变量会被写入被打开窗体的OpenArgs属性中,由此可以在该窗体的打开或者加载事件中,用这个me.OpenArgs来做子窗体的数据筛选。



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