vb6中的数据报表

vb6中的数据报表,vb6,ms-access-2007,report,Vb6,Ms Access 2007,Report,我在vb6中使用数据报表时遇到问题 我用命令创建了一个Dataenvironment来访问我想要显示的行 然后我制作了Datareport,并在datamember属性中使用了创建的Dataenvironment 如果我使用代码: Load datareport datareport.Show 1 然后,如果我打开报告,然后向表中添加更多行,当我再次打开报告时,它不会改变。我看到了相同的输出 我读到我应该重新打开连接。 如何正确地打开datareport的连接,然后将其关闭,以使MS Acce

我在vb6中使用数据报表时遇到问题

我用命令创建了一个Dataenvironment来访问我想要显示的行 然后我制作了Datareport,并在datamember属性中使用了创建的Dataenvironment

如果我使用代码:

Load datareport
datareport.Show 1
然后,如果我打开报告,然后向表中添加更多行,当我再次打开报告时,它不会改变。我看到了相同的输出

我读到我应该重新打开连接。
如何正确地打开datareport的连接,然后将其关闭,以使MS Access数据库不被锁定。

不确定Access中操作的确切顺序,但VB6中的
Load
命令在显示全局对象名称时,仅在尚未加载的情况下加载。显然,您需要在某一时刻(例如,关闭它时)卸载数据报表。

首先,您不必显式地对表单/报表使用
Load
,只需访问属性/方法即可加载实例

其次,不要使用表单/报表的全局实例——Form1,DataReport1——这是MS Access兼容性遗留下来的,强烈建议不要使用。您可以使用operator
New
--
Set MyInstance=New DataReport1创建表单/报表的单独实例,如常规类

在您的情况下,最简单的方法是用如下内容替换加载/显示代码:

With New DataReport1
    .Show vbModal
End With

其中DataReport1是报表类的名称。每次此代码段都会创建一个新的DataReport1实例,并以模式显示它。当用户关闭UI窗口时,新创建的实例将终止。

它将自动卸载,除非您在
QueryUnload
事件(或类似事件)中停止它。用户关闭时不卸载它的唯一方法是在
QueryUnload
事件中隐藏它(
Visible=False
)。