设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2410|回复: 8
打印 上一主题 下一主题

[报表] 真诚求助:报表显示正常,可是打印报表数据时确看不到

[复制链接]
跳转到指定楼层
1#
发表于 2007-5-14 19:24:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
再次求助:报表显示正常,可是打印报表数据时确看不到


报表打印发现了新的问题


    问题:最近在用打印机打印销售报表时发现了一个毛病。就是在明细子窗体输入一行数据和两行数

据时显示是正常的,可是打印时--确看不到(没有)数据。(只有输入了3行数据时打印才正常。可以看

到数据了)。


在输入了三行数据时---打印3行报表---显示数据才一切正常(在打出的报表中能看到有三行数据)。

我在发附件,请老师给看看哪里有问题和错误

可能与加了------一个设置“前景颜色”函数--有关。
但我不会代码,不知怎么改才能正常。
求助各位老师帮助看看到底是什么原因。

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2007-5-15 05:00:00 | 只看该作者
我提出的问题:主要是在打印票据时看不到数据,别人帮我做的固定行报表,是在报表代码中设置了前景颜色,所以在输入一行和两行数据时后一行是(白色)的。

我的问题是:

一、输入一行和两行时在报表中正常,在打印报表时就没有数据了。可能是隐藏了。怎样在报表中显示数据。

二、因为打印的是票据。是多页一起打印。如果是隐藏的,头一页看不见。后几页就可能显示输入的第一行数据了。
3#
发表于 2007-5-15 19:10:00 | 只看该作者
手头没打印机来测试,根据您的意思,不论明细记录有几行,都打印出来,作出更改建议。

Private Sub 主体_Print(Cancel As Integer, PrintCount As Integer)
    Select Case Me.文本25
        Case 1
            'If PrintCount > 1 Then Call ForeColorSet(Me)
            If PrintCount < 3 Then Me.NextRecord = False
        Case 2
            intCount = intCount + 1
            'If intCount = 3 Then Call ForeColorSet(Me)
            If intCount > 1 Then
                If PrintCount < 2 Then Me.NextRecord = False
            End If
    End Select
End Sub
4#
 楼主| 发表于 2007-5-15 23:46:00 | 只看该作者
谢谢hi-wzj 老师的帮助;

我修改后测试一下。看看能否达到效果。
5#
 楼主| 发表于 2007-5-15 23:56:00 | 只看该作者
hi-wzj 老师:你注销了两条代码后。确又存在了一个问题。

就是:在明细子报表中第一行输入数据。下面两行全部显示是第一行的记录。在第二行输入数据后。第三行显示的也是第二行的数据
6#
发表于 2007-5-16 00:56:00 | 只看该作者
你这是copy来的代码,对于你这种报表的实例不适用。关键在于你的记录有1、2、3条之分,不能用PrintCount来计数。请把下面的代码copy到你的报表中,这段代码没有测试过3条以上的记录,如果3条以上有问题,你可以根据1、2条记录的写法,自己改一下(在case else这段里面)。另外这个函数也不合适你的情况,改动了一下。Option Compare Database
Option Explicit
Dim intCount As IntegerPublic Function ForeColorSet(rpt As Report, Asbl As Boolean)
    Dim ctl As Control
    For Each ctl In rpt.Section(0).Controls
        If TypeOf ctl Is TextBox Then
            If Asbl Then
                  ctl.ForeColor = 16777215
            Else
                  ctl.ForeColor = 0
            End If
        End If
    Next ctl
End FunctionPrivate Sub Report_Open(Cancel As Integer)
intCount = 0
Call ForeColorSet(Me, False)
End SubPrivate Sub 主体_Print(Cancel As Integer, PrintCount As Integer)
    Select Case Me.文本25
        Case 1
        intCount = intCount + 1
            If intCount = 1 Then
             Me.NextRecord = False
            End If
            If intCount > 1 Then
             Me.NextRecord = False
            Call ForeColorSet(Me, True)
            End If
            If intCount = 3 Then
             Me.NextRecord = True
            End If
            If intCount > 3 Then Call ForeColorSet(Me, False)
        Case 2
        intCount = intCount + 1
            If intCount = 2 Then
             Me.NextRecord = False
            End If
            If intCount > 2 Then
             Me.NextRecord = False
            Call ForeColorSet(Me, True)
            End If
            If intCount = 3 Then
             Me.NextRecord = True
            End If
            If intCount > 3 Then Call ForeColorSet(Me, False)
        Case Else
        intCount = intCount + 1
            If intCou
7#
 楼主| 发表于 2007-5-16 01:43:00 | 只看该作者
谢谢sgrshh29 老师帮助。这回好像可以达到效果了。我明天去单位试打一下就知道了。再次谢谢。可以将QQ号告我吗?以后联系。
8#
 楼主| 发表于 2007-5-16 06:20:00 | 只看该作者
sgrshh29 老师:你好!

     我刚才测试过了。目前非常正常,没有发现问题。我明天在仔细检查一下。你太厉害了,谢谢你。你为我又解决了一大难题。
9#
 楼主| 发表于 2007-5-17 01:26:00 | 只看该作者
sgrshh29 老师:

     太谢谢你了!今天我在单位用票据打印机测试,报表打印一切正常。你为我真正解决了一大难题。祝你一切顺利。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-11 20:09 , Processed in 0.094754 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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