Office中国论坛/Access中国论坛

标题: [已解决]窗体中如何指定子报表的数据源? [打印本页]

作者: jynj    时间: 2008-2-22 08:52
标题: [已解决]窗体中如何指定子报表的数据源?
窗体中如何指定子报表的数据源?
-------------------------------------------------------------------
下面的示例将窗体的 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 编辑 ]
作者: t小宝    时间: 2008-2-22 14:37
用OpenReport方法打开报表时使用FilterName或WhereCondition参数。

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

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

DoCmd.OpenReport "多行报表", acPreview
作者: t小宝    时间: 2008-2-22 16:39
顺序错了,要先打开报表,再设置数据源
    Dim strNewRecord As String
DoCmd.OpenReport "多行报表", acPreview
    strNewRecord = "SELECT * FROM 报表 " & " WHERE ID = '" & Me.ID & "'"
    Reports("多行报表").多行报表子表.Report.RecordSource = strNewRecord
作者: t小宝    时间: 2008-2-22 16:48
也可以这样

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

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

    Me.RecordSource = "SELECT * FROM 报表 " & " WHERE ID = '" & Me.OpenArgs & "'"
   
End Sub
作者: jynj    时间: 2008-2-22 20:38
第一种方法在打开预览后,无法再设定记录集
第二种方法真是太好了,天晓得这个参数还有这么重要的作用,谢谢
不过这句要稍改一下
    Me.RecordSource = "SELECT * FROM 报表  WHERE ID = " & Me.OpenArgs
作者: goodboy040    时间: 2008-2-22 22:41
谢谢分享。。。。。。。。。。。。。。。。




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