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