设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 5388|回复: 14
打印 上一主题 下一主题

[报表] 报表页边距设置如何捕获错误代码?

[复制链接]
跳转到指定楼层
1#
发表于 2010-12-5 12:31:32 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在代码中设置报表的页边距,当设置值超出范围时,不能捕获错误代码,如下提示,请问要如何才能捕获这样的错误代码呢?



我写的代码如下:
On Error GoTo Err_View
    If CurrentProject.AllReports(strReport).IsLoaded Then
        Set ActPrinter = Application.Printers(mm)                               ''为选定的打印机选取打印机对象。
        With ActPrinter                                                                       ''读取用户指定的设置。
            .PaperSize = Me.Cmb纸张
            .TopMargin = Me.Text上 * 56.7
            .BottomMargin = Me.Text下 * 56.7
            .LeftMargin = Me.Text左 * 56.7
            .RightMargin = Me.Text右 * 56.7
            .Orientation = Me.Frm方向
            .DataOnly = Me.Chk数据
        End With
        
        'DoCmd.OpenReport strReport, acViewPreview                   ''以预览模式打开报表。
        ActReport.Printer = ActPrinter                                             ''将报表的打印机设置为已修改的打印机对象。
    End If
    Exit Sub
   
Err_View:
    MsgBox Err.Description, vbExclamation, CurrentDb.Properties("AppTitle")

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
15#
发表于 2012-5-5 11:27:46 | 只看该作者
遇到同样的问题 所以就下载了 附件  但打开窗体时提示 “你输入的表达式需要一个激活的报表”
14#
 楼主| 发表于 2010-12-7 16:51:42 | 只看该作者
经过两位大师的提醒,我发觉左右边距比较好检测,用打印机的itemsizewidth、纸张宽度、左右页边距相比较可以得出结果;但上下页边距就复杂得多,itemsizeheight只是报表主体节的高度,若报表还有页面的页眉页脚及报表的页眉页脚,甚至还有其他的节和组,这些部分的高度都得考虑,并且itemsizeheight的值有可能比纸张高度大,也可能很小,可能上下边距设置值的和已大于纸张高度但并不大于itemsizeheight,就不能提示错误了。
如tmtony所说,检测上下边距不大于某值(如15),但如果报表打印的结果是产品标签(如60*50),这时若上下边距各允许设置为15又显得太大,用纸张高度的5%作为允许值也许可行,但也不够合理,请大师们再出出招,这个例子有不小的实用价值,谢谢!
13#
发表于 2010-12-7 11:52:41 | 只看该作者
在你的With块内部最后加上下面语句,即可捕获此类错误:
            If .TopMargin + .BottomMargin >= .ItemSizeHeight Then MsgBox "上下边距超出纸张页面高度", , "错误提示"
        End With

点击这里给我发消息

12#
发表于 2010-12-7 10:01:03 | 只看该作者
设到大值会提示,但并不非法退出哦.
但为什么你要设置这么大哦, 一般在15以下,你可用代码限制用户不可大于这个值
11#
 楼主| 发表于 2010-12-7 08:36:45 | 只看该作者
呵呵,我经过多次试验都以为这个没有办法了,而且这个实例在坛子里还算有些参考价值,就改成收费的了。
10#
发表于 2010-12-6 22:40:47 | 只看该作者
哎,想帮你看看都要收费,没道理!
9#
 楼主| 发表于 2010-12-6 21:15:40 | 只看该作者
tmtony 发表于 2010-12-6 21:02
奇怪了,我调到0.01 都可以哦,只不过保存后再打开,变成了打印机允许的最小值

哦,是吗,是将页边距往大的方向设置哦!不是往小的方向设置。比如纸高为210,当上下页边距都设置为100时,就会出错崩溃的。

我又重装了一遍电脑,依然如故。

不是用Access自带的“页面设置”来设置,而是用我的“Fs_页面设置”窗体来设置,先预览报表,然后从工具栏的“页面设置”来调用进行设置。

点击这里给我发消息

8#
发表于 2010-12-6 21:02:35 | 只看该作者
奇怪了,我调到0.01 都可以哦,只不过保存后再打开,变成了打印机允许的最小值
7#
 楼主| 发表于 2010-12-6 18:51:39 | 只看该作者
谢谢tmtony的解答。
这些代码我在两台电脑上试了,都会出错。刚好周六重装了一台电脑,今天上午试了同样也会出错,很是纳闷!比如使用hp-lj1320激光打印机的A5纸(148*210),当上下边距各设置为100时,就崩溃了。
我再多试,主要是想解决在MDE下调整报表页边距的问题!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-16 03:16 , Processed in 0.105253 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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