热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

在子窗体中预览报表

本文适用于:Access2002以上版本(Access2000不支持弹出式报表)在很多的时候,需要在窗体的指定位置预览报表,可是Access并没有提供这样功能,Access报表也不能作为子窗体的形式放在窗体中。那么,如何解决这一问题呢?借助WindowsAPI我们可

本文适用于: Access 2002 以上版本 (Access 2000 不支持弹出式 报表 ) 在很多的时候,需要在窗体的指定位置预览 报表 ,可是 Access 并没有提供这样功能,Access 报表 也不能作为子窗体的形式放在窗体中。那么,如何解决这一问题呢?借助 Windows API 我们可


本文适用于: Access 2002 以上版本 (Access 2000 不支持弹出式报表) 

  在很多的时候,需要在窗体的指定位置预览报表,可是 Access 并没有提供这样功能,Access 报表也不能作为子窗体的形式放在窗体中。那么,如何解决这一问题呢?借助 Windows API 我们可以实现这一功能。

  在这过程中要用到三个 Windows API 函数,它们是:  

  Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long

  Private Declare Function GetDesktopWindow Lib "user32" () As Long

  Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

  LockWindowUpdate 函数:锁定当前窗口

  GetDesktopWindow 函数:获取当前桌面窗口

  SetParent 函数:将窗口放到指定的窗口中

    该过程主要原理是通过 SetParent 函数指定报表窗口的户窗口句柄 hWnd 来实现将报表窗口放置在指定口中。由于要用到窗口句柄 hWnd,而在 Access 只有窗体才具有窗口句柄 hWnd,因此我们用一个窗体来作为子窗体使用。在本文中,这个窗体名为 frmBack,具体属性设置如下:  

  记录选择器:否

  滚动条:两者均无

  记录选择器:否

  导航按钮:无

  分隔线:无

  自动调整:是

  边框样式:无

  图片:D:\我的文档\My Pictures\back-1.gif

  图片缩放模式:拉伸

  其它均为默认值

  这样这个窗体既具有窗口句柄 hWnd,又可作为开始的背景使用。

  下面开始设计报表,在本文中报表名为 rpt1,按照正常报表进行设计,只有一个属性需要特别设置:  

  弹出方式:是

  下面进行主窗体设计,在本文中窗体名为 frmOpenReportInSubForm,具体属性设置如下:  

  标题:在子窗体中预览报表

  滚动条:两者均无

  记录选择器:否

  导航按钮:否

  分隔线:否

  自动调整:是

  自动居中:是

  边框样式:对话框边框

  在窗体放上两个按钮:加载报表 cmdLoadRpt 和关闭报表 cmdCloseRPT,再放一个子窗体控件名为 subRPT,属性设置:  

  源对象:frmBack

  好了,界面设置完毕,开始编写代码:

  Form_frmOpenReportInSubForm 代码如下:  

  Option Compare Database

  Option Explicit  

  Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long

  Private Declare Function GetDesktopWindow Lib "user32" () As Long

  Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

  

  Private Sub Form_Unload(Cancel As Integer)

   ' 关闭报表

   DoCmd.Close acReport, "rpt1"

  End Sub

  

  Private Sub cmdCloseRPT_Click()

   ' 关闭报表

   DoCmd.Close acReport, "rpt1"

  End Sub

  

  Private Sub cmdLoadRpt_Click()

   Dim mWnd As Long

  

   ' 锁定当前桌面

   LockWindowUpdate GetDesktopWindow

   ' 打开报表 rpt1

   DoCmd.OpenReport "rpt1", acViewPreview, , , acWindowNormal

   ' 获取报表窗体窗口句柄

   mWnd = Reports("rpt1").hwnd

  

   ' 设置报表的父窗口为子窗体

   SetParent mWnd, Me.subRPT.Form.hwnd

  

   ' 解锁当前桌面

   LockWindowUpdate False

  

   ' 选择报表对象,对其进行最大化

   DoCmd.SelectObject acReport, "rpt1"

   DoCmd.Maximize

  End Sub

  好了,整个设计过程完毕,打开 frmOpenReportInSubForm,点击[加载报表]按钮,你看到什么?报表就在子窗体按件的位置打开了

本文作者:
推荐阅读
  • 这是一道涉及数学计算的问题。假设步行速度为 \(a\),车速为 \(b\),总距离为 \(c\)。Teddy 的步行时间为 \(T_1\),WhereIsHeroFrom 的步行时间为 \(T_2\),总时间为 \(T\)。通过分析不同时间段内的速度变化,可以得出最优的车辆使用策略,以最小化总的旅行时间。具体来说,需要计算在不同情况下步行和乘车的时间分配,以确保整体效率最大化。 ... [详细]
  • 如何在Windows 7计算机上高效连接无线网络:Win7无线网络连接指南 ... [详细]
  • 如何在Windows 10系统中正确安装Xbox控制器? ... [详细]
  • 将解压缩版Tomcat集成至系统服务
    将解压缩版Tomcat集成至系统服务的方法如下:首先,在命令行中导航至Tomcat的`bin`目录,运行`service.bat install`命令以安装服务。需要注意的是,服务名称和显示名称已在`service.bat`脚本中预设,默认情况下会随不同版本有所变化。此外,建议检查并配置相关参数,确保服务能够稳定运行。 ... [详细]
  • 本指南详细介绍了在Linux环境中高效连接MySQL数据库的方法。用户可以通过安装并使用`mysql`客户端工具来实现本地连接,具体命令为:`mysql -u 用户名 -p 密码 -h 主机`。例如,使用管理员账户连接本地MySQL服务器的命令为:`mysql -u root -p pass`。此外,还提供了多种配置优化建议,以确保连接过程更加稳定和高效。 ... [详细]
  • Python默认字符解析:深入理解Python中的字符串处理
    在Python中,字符串是编程中最基本且常用的数据类型之一。尽管许多初学者是从C语言开始接触字符串,通常通过经典的“Hello, World!”程序入门,但Python对字符串的处理方式更为灵活和强大。本文将深入探讨Python中的字符串处理机制,包括字符串的创建、操作、格式化以及编码解码等方面,帮助读者全面理解Python字符串的特性和应用。 ... [详细]
  • 题目探讨了在无向图中求解点连通数的问题,具体涉及UVA1660和POJ1966两个经典问题。通过最小割算法的应用,分析了如何高效地确定网络中的关键节点和路径,为电缆电视网络的优化设计提供了理论支持。该研究不仅验证了最小割算法的有效性,还为进一步探索复杂网络的连通性和鲁棒性奠定了基础。 ... [详细]
  • 在 POJ1651 的乘法谜题挑战中,如果选手按相反顺序选择卡片,即先选 50,再选 20,最后选 1,则最终得分会有所不同。题目要求输入的第一行包含... 改写后的摘要:在 POJ1651 的乘法谜题挑战中,如果选手按照逆序选取卡片,例如依次选择 50、20 和 1,最终的得分将发生变化。题目首先要求输入的第一行包括... ... [详细]
  • 如何配置电脑在休眠时自动关闭特定应用程序?
    如何配置电脑在休眠时自动关闭特定应用程序? ... [详细]
  • 资源管理器的基础架构包括三个核心组件:1)资源池,用于将CPU和内存等资源分配给不同的容器;2)负载组,负责承载任务并将其分配到相应的资源池;3)分类函数,用于将不同的会话映射到合适的负载组。该系统提供了两种主要的资源管理策略。 ... [详细]
  • WebStorm 是一款强大的集成开发环境,支持多种现代 Web 开发技术,包括 Node.js、CoffeeScript、TypeScript、Dart、Jade、Sass、LESS 和 Stylus。它为开发者提供了丰富的功能和工具,帮助高效构建和调试复杂的 Node.js 应用程序。 ... [详细]
  • 如何在Linux系统中实现Windows风格的桌面环境:将Ubuntu 18.04定制为Windows主题界面
    如果您是从Windows转到Linux系统的用户,可能会觉得默认的Ubuntu主题和桌面环境缺乏吸引力和可定制性。尤其是对于习惯了Windows风格的任务栏和主题的用户,Ubuntu 18.04的橙色主题可能显得过于简洁。为了提升用户体验,可以通过安装特定的桌面环境和主题来实现类似Windows的界面效果。本文将详细介绍如何在Ubuntu 18.04中配置和定制桌面环境,使其具备Windows风格的外观和功能。 ... [详细]
  • AngularJS 进阶指南:第三部分深入解析
    在本文中,我们将深入探讨 AngularJS 的指令模型,特别是 `ng-model` 指令。`ng-model` 指令用于将 HTML 元素与应用程序数据进行双向绑定,支持多种数据类型验证,如数字、电子邮件地址和必填项检查。此外,我们还将介绍如何利用该指令优化表单验证和数据处理流程,提升开发效率和用户体验。 ... [详细]
  • 如何在低配置电脑上下载并运行《绝地求生》游戏? ... [详细]
  • 本文深入解析了Java面向对象编程的核心概念及其应用,重点探讨了面向对象的三大特性:封装、继承和多态。封装确保了数据的安全性和代码的可维护性;继承支持代码的重用和扩展;多态则增强了程序的灵活性和可扩展性。通过具体示例,文章详细阐述了这些特性在实际开发中的应用和优势。 ... [详细]
author-avatar
唯心任
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有