Office中国论坛/Access中国论坛

标题: 代码创建报表实例,里面的控件不能被引用 [打印本页]

作者: zyp    时间: 2016-5-4 10:43
标题: 代码创建报表实例,里面的控件不能被引用
用下面代码创一个报表实例

Dim Rpt As Report
Set Rpt = New Report_PypzyPrint4   '报表的类对象的一个实例

PypzyPrint4是已经存在的一个报表,这个报表中有一个控件名为JID,它的数据源来自于一个查询中的JID字段

现在在报表PypzyPrint4的主体的Format事件有一行代码:

debug.print me.jid

如果直接打开报表,或用docmd.openreport来打开这个报表,这一行可以正常执行,但是如果用创建的报表实例来打开它,就会提示:

你所输入的表达式中,使用了 XXX系统 找不到的字段、控件或属性名称

不知是什么原因造成的。

用报表实例来打开报表,而不直接打开,是因为要用报表实例来实现打印边距、纸张、打印机的预设

请各位高手给点意见,谢谢!

作者: tmtony    时间: 2016-5-4 10:46
把报表对象先显示出来看看 让报表可见。看看是否可以
作者: roych    时间: 2016-5-4 14:23
大概是这样吧【水印部分为:MsgBox Report_area!ID】
[attach]58959[/attach]不过,这样只能读取到最后一条记录。

作者: zyp    时间: 2016-5-5 16:35
roych 发表于 2016-5-4 14:23
大概是这样吧【水印部分为:MsgBox Report_area!ID】
不过,这样只能读取到最后一条记录。

谢谢Roych

在报表打开的状态下,用一个表单来运行下面代码:

MsgBox Report_PypzyPrint4!Jid

还是报同样的错误(你所输入的表达式中,使用了 XXX系统 找不到的字段、控件或属性名称),而用:

MsgBox Reports(0)!Jid      ‘PypzyPrint4是唯一打开的报表

就可以,就像你说的一样,只能读取到最后一条记录;

而在报表里运行代码,不论哪一条语句,都报同样的错误


在报表里, 可以运行下面代码:

Debug.Print Reports(0).Controls(26).name

输出 Jid

但不能运行

Debug.Print Reports(0).Controls(26)



Debug.Print Reports(0).Controls(26).value

运行上面这两条语句就报同样的错误
作者: zyp    时间: 2016-5-5 16:48
本帖最后由 zyp 于 2016-5-5 16:49 编辑
tmtony 发表于 2016-5-4 10:46
把报表对象先显示出来看看 让报表可见。看看是否可以


谢谢王站!

不知王站所说的让报表可见是什么意思,是不是直接打开报表,然后再用程序去创建它的实例,如果是这样的话,我电脑直接报Runtime Error,然后就退出ACCESS了

我要做的是下面这样的报表
[attach]58971[/attach]
图片是存在电脑某个目录中,在报表中用代码来得图片控件指定其路径(比如第一张图片的路径就是E:\TP\4221.jpg),如果不用程序创建报表的实例来打开报表,运行一切正常,图片什么的都没有问题,但是,如果不用程序创建报表的实例来打开报表,在ACCESS2003中,没有办法预先设定打印(用一个表来保存在每一台电脑用哪一台打印机和什么纸张来打印这个报表,这样用户就不用每次来选打印机和纸张了)

好像创建的报表实例,在该报表的代码中,无法用 me或reports!报表名称   的方式来引用它,只能用  reports(index) 来引用,同样,引用报表中的某个控件,也只能用reports(index).controls(index)来引用,但是就算这样,也不能取得这个控件的值,reports(index).controls(index)这条语句就会报错,但用reports(index).controls(index).name又不会出错,还可以输出正常的结果,比如结果为"jid"

想了好多方法,都实现不了,真是头痛!








欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3