设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2943|回复: 7
打印 上一主题 下一主题

[窗体] [已解决]窗体中如何指定子报表的数据源?

[复制链接]
跳转到指定楼层
1#
发表于 2008-2-22 08:52:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
窗体中如何指定子报表的数据源?
-------------------------------------------------------------------
下面的示例将窗体的 RecordSource 属性设为“客户”表:
Forms!frmCustomers.RecordSource = "Customers"  
下一个示例根据 cmboCompanyName 组合框控件中选定的公司名称,将窗体的记录源更改为“客户”表中的单个记录。该组合框的内容由一条语句决定,该 SQL 语句返回的是客户 ID(在绑定列中)和公司名称。“客户ID”的数据类型为“文本”型。

Sub cmboCompanyName_AfterUpdate()
    Dim strNewRecord As String    strNewRecord = "SELECT * FROM Customers "  & " WHERE CustomerID = '"  & Me!cmboCompanyName.Value & "'"
    Me.RecordSource = strNewRecord
End Sub
-----------------------------
上述示例是将指定窗体的数据源,如果指定报表或子报表的数据源,要如何修改呢?

[ 本帖最后由 jynj 于 2008-2-22 20:38 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2008-2-22 14:37:14 | 只看该作者
用OpenReport方法打开报表时使用FilterName或WhereCondition参数。

或者在窗体打开报表后引用报表名称设置报表记录源:Reports("报表名").RecordSource="",
子报表:Reports("报表名").子报表控件名.Report.RecordSource

[ 本帖最后由 t小宝 于 2008-2-22 14:42 编辑 ]
3#
 楼主| 发表于 2008-2-22 16:22:07 | 只看该作者
上述代码写在窗体里还是写在报表里
4#
 楼主| 发表于 2008-2-22 16:32:11 | 只看该作者
在窗体中输入上述代码,错误为:你在表达式中输入报表名称"多行报表"或引用的报表未打开
    Dim strNewRecord As String
    strNewRecord = "SELECT * FROM 报表 " & " WHERE ID = '" & Me.ID & "'"
    Reports("多行报表").多行报表子表.Report.RecordSource = strNewRecord

DoCmd.OpenReport "多行报表", acPreview

点击这里给我发消息

5#
发表于 2008-2-22 16:39:17 | 只看该作者
顺序错了,要先打开报表,再设置数据源
    Dim strNewRecord As String
DoCmd.OpenReport "多行报表", acPreview
    strNewRecord = "SELECT * FROM 报表 " & " WHERE ID = '" & Me.ID & "'"
    Reports("多行报表").多行报表子表.Report.RecordSource = strNewRecord

点击这里给我发消息

6#
发表于 2008-2-22 16:48:41 | 只看该作者
也可以这样

窗体单击按钮:
DoCmd.OpenReport "报表名", acViewPreview, , , , Me.ID

子报表打开事件:
Private Sub Report_Open(Cancel As Integer)

    Me.RecordSource = "SELECT * FROM 报表 " & " WHERE ID = '" & Me.OpenArgs & "'"
   
End Sub
7#
 楼主| 发表于 2008-2-22 20:38:07 | 只看该作者
第一种方法在打开预览后,无法再设定记录集
第二种方法真是太好了,天晓得这个参数还有这么重要的作用,谢谢
不过这句要稍改一下
    Me.RecordSource = "SELECT * FROM 报表  WHERE ID = " & Me.OpenArgs
8#
发表于 2008-2-22 22:41:34 | 只看该作者
谢谢分享。。。。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 17:39 , Processed in 0.091271 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表