设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[报表] 报表打印难题

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-10 11:03:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个报表打印问题需请教大家.
问题是这样的:
1>报表是由A表(余额表,正反2页)和B表(明细表,页数不等)组成.
2>当只有A表时,在表的右上角打印B标签;
3>当含有B表时,在B表的最后页打印B标签,其它页打印A标签;

我的想法是:
1>对于A表,在指定的位置放上A,B标签,并隐藏起来.然后在A表放一个标识来表示是否只有A表,如果该标识为真,显示B标签,否则显示A标签.
2>对于B表,同样在指定的位置放上A,B标签,并隐藏起来.然后判断是否为最后一页,是则显示B标签,否则显示A标签.

不知道这个思路是否正确?该如何实现呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-9-10 11:45:52 | 只看该作者
将例子放上来吧。
3#
 楼主| 发表于 2007-9-10 21:55:28 | 只看该作者
过程如下:
1>处理原始数据
2>分别将余额帐单信息追加到表tblJobRPT和tblAccPRT中供报表'new'和'明细报表'使用.
3>在程序中调用报表'new'进行打印.并判断是否有明细信息,如有接着调用'明细报表'进行打印.
4>循环进行打印,直到打印结束.
5>将'余额帐单'和'明细帐单'(如果有)折叠后装如信封.

现在采用机器封装,但问题是,该机器在处理多页封装时的工作方式为:在多页的最后一页的右上角画四条横线作为封装指令,其它的每页上只有3条横线做为停止封装码.这样,在工作时,只要是识别到4条横线,那么就将之前所有的带有3条横线的纸一起封装入信封.

现在就是要将以前手工封装的过程改为自动封装.

[ 本帖最后由 Danny.Chu 于 2007-9-11 00:08 编辑 ]

本帖子中包含更多资源

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

x
4#
发表于 2007-9-11 19:36:57 | 只看该作者
问问题应该把最少的工作交给别人来做.

给你一个建议:
在明细报表的格式化过程中,设置是显示3条横线或4条横线,具体例子在论坛中可搜索
5#
 楼主| 发表于 2007-9-11 21:43:38 | 只看该作者
实例已做好并可以运行,上面提到的过程是程序运行的流程.
主要想知道在一楼提到的思路是否可行,并借此机会向大家学习.
6#
发表于 2007-9-11 22:12:58 | 只看该作者
你的要求应该可以实现,你应该保留适当的运行代码,和部分示例数据,这样便于别人来进行调试和判断,不然,你想让别人来造一些数据出来进行测试是否需要不少时间呢?
要么,你就在论坛上搜索有关报表的例子,你这个主要相关的应该是"报表固定行数"之类的,相信有些示例中就会有你想要的相似的代码.
7#
 楼主| 发表于 2007-9-11 22:29:47 | 只看该作者
是用VB写的,并在VB里调它.
我仔细想过,A表的问题好解决
用表tblJobPRT中的字段HAVEPAGE做标记,
代码如下
Private Sub 主体_Print(Cancel As Integer, PrintCount As Integer)
    If Me.HavePage = 0 Then   '无明细记录时
        Line306.Visible = True   '显示第四条横线
    Else
        Line306.Visible = False
    End If
End Sub

B表呢?
我要在B表的最后一页显示第四条线,用什么来判断是最后一页呢?
IF PAGE=PAGES THEN.......

但,在明细表中,记录是根据表tblAccPRT中记录数来填充的,当在多页时,要在不同页的相同位置显示不同的状态,我没有思路....
8#
 楼主| 发表于 2007-9-11 22:33:39 | 只看该作者
VB中相关代码如下
Private Sub cmdPrintAll_Click()
    ProgressBar1.Visible = True
    ProgressBar1.Max = lstBarcode.ListCount
    For I = 1 To lstBarcode.ListCount
        ProgressBar1.Value = I
        Label6.Caption = "第 " & lstBarcode.ListIndex + 1 & " 条/共 " & lstBarcode.ListCount & " 条"
        lstBarcode.ListIndex = I - 1

        If GetCustomerInfo(lstBarcode.Text) = True Then
            conn.Execute "DELETE * FROM tblJobPRT"
            conn.Execute "DELETE * FROM tblAccPRT"
            conn.Execute "INSERT INTO tblJobPRT ( 单位账号, 序号, 所号, 条形码, 单位名称, 存款类型, 账户余额, 累计借方发生额, 累计贷方发生额, 机构名称, 机构地址, 岗位, 姓名, 办公电话, 客户地址, 邮政编码, 联系电话, 联系人, 对帐截止日期, HavePage ) " & _
                "SELECT tblJobList.单位账号, tblJobList.序号, tblJobList.所号, tblJobList.条形码, tblJobList.单位名称, tblJobList.存款类型, tblJobList.账户余额, tblJobList.累计借方发生额, tblJobList.累计贷方发生额, tblJobList.机构名称, tblJobList.机构地址, tblJobList.岗位, tblJobList.姓名, tblJobList.办公电话, tblJobList.客户地址, tblJobList.邮政编码, tblJobList.联系电话, tblJobList.联系人, tblJobList.对帐截止日期, tblJobList.HavePage " & _
                "From tblJobList " & _
                "WHERE tblJobList.单位账号 = '" & txtAccount.Text & "'"
            printCus
            If HaveAtt = True Then
                conn.Execute "INSERT INTO tblAccPRT ( NSN,所号, 一级支行, 二级支行, 科目号, 账号, 单位名称, 日期, 摘要, 凭证号, 对方科目, 借贷标志, 借发生额, 贷发生额, 借或贷, 余额, 复合员 ) " & _
                    "SELECT tblAccount.NSN, tblAccount.所号, tblAccount.一级支行, tblAccount.二级支行, tblAccount.科目号, tblAccount.账号, tblAccount.单位名称, tblAccount.日期, tblAccount.摘要, tblAccount.凭证号, tblAccount.对方科目, tblAccount.借贷标志, tblAccount.借发生额, tblAccount.贷发生额, tblAccount.借或贷, tblAccount.余额, tblAccount.复合员 " & _
                    "From tblAccount " & _
                    "WHERE tblAccount.账号 = '" & txtAccount.Text & "' ORDER BY NSN"
                printAcc
            End If
        End If
        If Check1.Value = 1 Then
            If I = 10 Then Exit For
        End If
    Next
End Sub

Sub printCus()
    Dim MSAccess As New Access.Application
    MSAccess.OpenCurrentDatabase App.Path & "\whcbank.mdb"
    MSAccess.DoCmd.OpenReport "new", acViewNormal
    MSAccess.CloseCurrentDatabase
    MSAccess.Quit
End Sub

Sub printAcc()
    Dim MSAccess As New Access.Application
    MSAccess.OpenCurrentDatabase App.Path & "\whcbank.mdb"
    MSAccess.DoCmd.OpenReport "明细报表", acViewNormal
    MSAccess.CloseCurrentDatabase
    MSAccess.Quit
End Sub
9#
发表于 2007-9-11 23:34:48 | 只看该作者
在明细的的页格式化事件中,加入
Private Sub PageHeader_Format(Cancel As Integer, FormatCount As Integer)
If [Page] <> [Pages] Then Me.Line306.Visible = False
End Sub


之类的如何?
10#
发表于 2007-9-11 23:43:26 | 只看该作者
四条线默认为显示,当不是最后一页时,隐藏其中一条
不知你
IF PAGE=PAGES THEN.......
这个原来放在哪里,为何不行呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-21 14:33 , Processed in 0.112259 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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