在子窗体中预览报表
本文适用于: 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,点击[加载报表]按钮,你看到什么?报表就在子窗体按件的位置打开了
本文作者:
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SQL IF 語句用於有條件地執行 SQL 語句,語法為: IF (condition) THEN {語句} ELSE {語句} END IF;。條件可以是任何有效的 SQL 表達式,如果條件為真,執行 THEN 子句;如果條件為假,執行 ELSE 子句。 IF 語句可以嵌套,允許更複雜的條件檢查。

解決 Vue Axios 跨域問題的方法包括:服務器端配置 CORS 頭使用 Axios 代理使用 JSONP使用 WebSocket使用 CORS 插件

如何在 Apache 中配置 Zend?在 Apache Web 服務器中配置 Zend Framework 的步驟如下:安裝 Zend Framework 並解壓到 Web 服務器目錄中。創建 .htaccess 文件。創建 Zend 應用程序目錄並添加 index.php 文件。配置 Zend 應用程序(application.ini)。重新啟動 Apache Web 服務器。

多線程的好處在於能提升性能和資源利用率,尤其適用於處理大量數據或執行耗時操作。它允許同時執行多個任務,提高效率。然而,線程過多會導致性能下降,因此需要根據 CPU 核心數和任務特性謹慎選擇線程數。另外,多線程編程涉及死鎖和競態條件等挑戰,需要使用同步機制解決,需要具備紮實的並發編程知識,權衡利弊並謹慎使用。

無法以 root 身份登錄 MySQL 的原因主要在於權限問題、配置文件錯誤、密碼不符、socket 文件問題或防火牆攔截。解決方法包括:檢查配置文件中 bind-address 參數是否正確配置。查看 root 用戶權限是否被修改或刪除,並進行重置。驗證密碼是否準確無誤,包括大小寫和特殊字符。檢查 socket 文件權限設置和路徑。檢查防火牆是否阻止了 MySQL 服務器的連接。

本文介紹如何在Debian系統上有效監控Nginx服務器的SSL性能。我們將使用NginxExporter將Nginx狀態數據導出到Prometheus,再通過Grafana進行可視化展示。第一步:配置Nginx首先,我們需要在Nginx配置文件中啟用stub_status模塊來獲取Nginx的狀態信息。在你的Nginx配置文件(通常位於/etc/nginx/nginx.conf或其包含文件中)中添加以下代碼段:location/nginx_status{stub_status

PHPMyAdmin安全防禦策略的關鍵在於:1. 使用最新版PHPMyAdmin及定期更新PHP和MySQL;2. 嚴格控制訪問權限,使用.htaccess或Web服務器訪問控制;3. 啟用強密碼和雙因素認證;4. 定期備份數據庫;5. 仔細檢查配置文件,避免暴露敏感信息;6. 使用Web應用防火牆(WAF);7. 進行安全審計。 這些措施能夠有效降低PHPMyAdmin因配置不當、版本過舊或環境安全隱患導致的安全風險,保障數據庫安全。

vProcesserazrabotkiveb被固定,мнелостольностьстьс粹餾標д都LeavallySumballanceFriablanceFaumDoptoMatification,Čtookazalovnetakprosto,kakaožidal.posenesko
