Access交流中心

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

黄海老师的子报表补空行存在些小问题,请求帮助

沉沉的  发表于:2012-09-12 05:05:43  
复制

http://www.accessoft.com/article-view.asp?id=5247

 

本人想做一个送货单软件,用于机打送货单,每页8条记录,于是借用了黄老师的补空行代码,发现如果记录数设为6,一切正常,改为8后,就会出现如下问题,

6第记录以下,功能正常,7条时报表会多出一条记录共九条.而且第7,8条重复.8条时,报表也是多出一条记录,共九条,第8,9条重复.请大家帮忙看看,是哪出了问题.

 

黄老师代码如下:

 

'=====================================================
'版权所有:黄海
'电子邮件:hhaa@vip.sina.com
'QQ:17904857
'MSN Messanger:hhem@hotmail.com
'网址:www.accessQQ.com
'最后更新时间:2005-4-10
'=====================================================

'报表设置好后 , 代码部分共要设置三个地方

Option Compare Database
Option Explicit
'1------------------------------
Private Const iRecordsAtPage As Integer = 6  '定义一页显示的记录数,跟报表一致

Private lAllRecords As Long         '全部记录数
Private lAllPrintRecords As Long    '全部要打印的记录数,包括空行

Private L As Long
Private Ctrl As Control

Private Sub Report_Open(Cancel As Integer)
'2------------------------------
'取记整个要打印的记录数
    lAllRecords = DCount("[产品名称]", "[打印订单明细]")
    'Debug.Print lAllRecords
    If lAllRecords Mod iRecordsAtPage = 0 Then
        lAllPrintRecords = lAllRecords
    Else
        lAllPrintRecords = (Int(lAllRecords / iRecordsAtPage) + 1) * iRecordsAtPage
    End If

    '3------------------------------
    '定义主体中绑定字段的TAG属性为: 主体显示控件
    For Each Ctrl In Me.Section(acDetail).Controls
        If Ctrl.Tag = "主体显示控件" Then Ctrl.Visible = True
    Next
End Sub

Private Sub 报表页眉_Format(Cancel As Integer, FormatCount As Integer)
    L = 0
    showHideCtrlAtDetail True
End Sub

Private Sub 主体_Print(Cancel As Integer, PrintCount As Integer)
    L = L + 1
    If L = lAllRecords Then
        Me.NextRecord = False
    ElseIf L > lAllRecords And L < lAllPrintRecords Then
        Me.NextRecord = False
        showHideCtrlAtDetail False
    End If
End Sub
Private Sub showHideCtrlAtDetail(isShow As Boolean)
    For Each Ctrl In Me.Section(acDetail).Controls
        If Ctrl.Tag = "主体显示控件" Then Ctrl.Visible = isShow
    Next
End Sub

 

Top
蒋元根 发表于:2012-09-27 11:19:22

供参考

[access报表]学习黄海报表补空行需要注意的问题

http://www.accessoft.com/blog/article-show.asp?userid=193&Id=3361

 



零智 发表于:2012-11-11 15:45:48
主体_Print事件按下以修改:【经经一页和二页测试可用】
Private Sub 主体_Print(Cancel As Integer, PrintCount As Integer)
    L = L + 1
    If L >= lAllRecords And L < lAllPrintRecords Then
        Me.NextRecord = False
    End If
    If L > lAllRecords Then
        showHideCtrlAtDetail False
    End If
End Sub


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