Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于报表分页的困惑

mosengren  发表于:2008-07-10 21:29:44  
复制

我使用Access 2003 professional

前些日子在论坛里发现了报表分页的源码(如下)

 

Option Compare Database
Dim row As Long
Private Sub 主体_Format(Cancel As Integer, FormatCount As Integer)
row = row + 1
If Me.Section(acDetail).ForceNewPage = 1 Then
  Me.Section(acDetail).ForceNewPage = 0
Else
  If row Mod 3 = 0 Then
    Me.Section(acDetail).ForceNewPage = 1
    row = 0
  End If
End If
End Sub

我根据需要设定为每页3行

在预览中可以正确分页

但令人困惑的是有时明明只有2行或3行

打印出来时却会分成两页

和预览效果不一样

我发现其规律是第一次分2页

之后两次正确——只分1页

然后再2页
两次1页
……

 

我跟踪出来在预览之后真正打印时上面这个程序块是不运行的(加载预览页时才运行)

那么有规律的错误分页是如何造成的?

 

Top
学员杨 发表于:2008-07-10 21:39:07

——打印出来时却会分成两页 和预览效果不一样——

会不会是你报表设置的打印纸模式和打印机实际用的不一样?



常昊 发表于:2008-07-11 16:44:53

回楼上的

我设置的是A4的纸(实际上我的报表没有那么大)

我点击打印后

在打印机队列里就能看到是两页(虽然预览是一页)

 

所见非所得

让我很郁闷



sosopain 发表于:2008-07-11 20:18:45

奇怪.我的帮助文件里面为什么没有report 的format事件? 但是VBA编辑器里面有这个事件呢?



常昊 发表于:2008-07-13 22:12:28

没有人遇到过类似问题吗?

还是没人知道解决办法?



常昊 发表于:2008-07-14 10:21:26

我用虚拟打印机也是相同的结果

现在确定跟打印机无关



竹笛 发表于:2008-07-14 11:14:51
该示例在access2000和access2007下测试是正确的,示例在:http://www.accessoft.com/article-show.asp?id=2195

常昊 发表于:2008-07-29 10:08:02

bamboo大人:

很感谢你回帖!

我使用的是Access 2003 Pro SP3。目前问题还是没有解决。我发觉规律是:当需打印行只有两行时,第一次点打印会出错,分成两行。如果不关闭打印预览,接着打印几次,接下来两次打印是正确的,到第三次又出错,然后再两次正确,如此往复。

如果需打印行是一行或三行及以上,则不会出现任何错误。

 

我把你的示例中的数据删成两条后,打印时也会出现这种现象。2000和2007上没有试过会不会这样。

 

打印效果跟数据有关系,很奇怪的问题。



常昊 发表于:2008-07-29 10:25:25

而且最要命的是

打印预览都是正确的,但打印出来的结果有可能跟预览不一致。



常昊 发表于:2008-08-29 11:50:29

问题已经解决了

 

从这篇文章得到的启示

http://blog.csdn.net/changechange/archive/2004/01/24/18600.aspx

 

恰好我的记录里每行都有个顺序递增的行号

直接用行号取模

 

If (Me![LINE NO] Mod 3) = 0 Then
    Me.Section(acDetail).ForceNewPage = 1
Else
    Me.Section(acDetail).ForceNewPage = 0
End If



总记录:9篇  页次:1/1 9 1 :