MDE或ACCDE在Access报表保存纸张大小及页面边距

2017-08-22 09:59:00
andymark
原创
274

当Access生成MDE或ACCDE格式之后,在Access报表保存纸张大小及页面边距一直是Access数据库用户心中的痛。

下面提供版主们的一些解决报表如何保存打印边距的方法


andymark:

应该可以,需要用集合的方式打开报表才能改变纸张大小

Public clnClient As New Collection
Public Sub GetPage(ReportName As String)  '读取页边距
Dim Rs As New ADODB.Recordset
Dim Conn As New ADODB.Connection
Set Conn = CurrentProject.Connection
Dim SQL As String
Dim Rpt As Report

SQL = "SELECT * FROM Dybbcs where bbmc='" & ReportName & "'"

Set Rpt = New Report_Test

Rs.Open SQL, Conn, adOpenDynamic, adLockOptimistic

With Rpt.Printer
        .TopMargin = Rs.Fields("bbsbj")
        .BottomMargin = Rs.Fields("bbxbj")
        .LeftMargin = Rs.Fields("bbzbj")
        .RightMargin = Rs.Fields("bbybj")
        .papersize = acPRPSA4
End With

clnClient.Add Item:=Rpt, Key:=CStr(Rpt.Hwnd)
Rpt.Visible = True

Set Rs = Nothing
Set Conn = Nothing
End Sub

打开报表时
GetPage "test"

我这里测试OK



还可参考这里的Access源码示例: 以前做的例子 , 能动态设置的:MDE保存调用页边距的例子

需要在窗体中执行和调用
在"test" 报表中设定的纸张为A4, 纵向
把报表中"test"另存为副本 在Open事件中加载同样的代码

通过窗体用集合打开可以改变纸张的方向和大小; 而直接打开test副本虽然在页面设置栏里显示的是横向, 但报表却是纵向的,直到按确定才改变方向

大家用打印机测试一下效果, 我这果没打印机, 不知是不是真正改变了

mde保存页边距XP0803174.rar


分享