设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[报表] 打开报表 DoCmd.OpenReport

[复制链接]
跳转到指定楼层
1#
发表于 2012-6-13 11:40:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
举个例子,你要单击一个按钮后,打开某一个报表,那么按钮的单击事件过程应如下:
         DoCmd.OpenReport "***报表", acViewPreview
如果你的报表记录源和窗体同源,窗体的主键为ID.而你单击按钮后,只想预览一下窗体的当前记录时,代码如下:
    DoCmd.OpenReport "***报表", acViewPreview, , "ID=[Forms]![***窗体].[ID]"
还有,利用报表的OpenArgs属性,来指定报表的记录源条件时,窗体上按钮的代码如下:
        DoCmd.OpenReport "***报表", acViewPreview, , , , Me.***子窗体.Form.[ID]
这时,报表的Open事件过程应有如下代码:
    If Not IsLoaded("***窗体", acForm) Or IsNull(Me.OpenArgs) Then
        MsgBox "请从[***窗体]中,按[打印]按钮来启动本报表!~", vbInformation
        Cancel = True
    Else
       Me.RecordSource = "SELECT ××表.* FROM ××表 WHERE (((××表.ID)=" & Me.OpenArgs & "));"
    End If
以上这些,不知明了否?
附IsLoaded函数定义:
Function IsLoaded(ByVal strFormName As String, Optional intLeiXing As Long = acForm) As Boolean  ' 如果指定窗体或报表打开,返回 True。
    Const conObjStateClosed = 0
    Const conDesignView = 0
    If SysCmd(acSysCmdGetObjectState, intLeiXing, strFormName) <> conObjStateClosed Then
        If intLeiXing = acForm Then '如果是窗体
            If Forms(strFormName).CurrentView <> conDesignView Then
                IsLoaded = True
            End If
        Else
                IsLoaded = True
        End If
    End If
End Function
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-7-26 22:39:03 | 只看该作者
{:soso_e100:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-29 14:36 , Processed in 0.098889 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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