2010-11-15 94 views
7

我在Access 2003中有一个简单的表单,查询和报告。我必须使用VBA在记录集中处理查询的结果,然后将其作为RecordSource传递给报告。ADODB RecordSet作为访问报告RecordSource

如果我将Recordset声明为RecordSet并使用它的Name属性作为报表的RecordSource,那么它正在工作。但是,因为我需要编辑记录集,所以我认为使用ADODB RecordSet会更容易一些,如下所示。

记录集在全局模块中声明为Dim rs As ADODB.RecordSet。 其余的代码是;

Dim db As Database 
Set db = CurrentDb 
Dim con As ADODB.Connection 
Set con = CurrentProject.Connection 
Set rs = New ADODB.Recordset 
Set rs.ActiveConnection = con 
rs.Source = "Select * from XXX" 
rs.LockType = adLockOptimistic 
rs.CursorType = adOpenKeyset 
rs.Open 

'manipulate rs here....' 

我用来传递报告的RecordSource作为myReport.RecordSource = rs.Name。 但是ADODB没有Name属性。

如何将此记录集作为RecordSource传递给报表?

感谢

+0

为什么你认为你这样做吗?为什么不能在报告的OnOpen事件中设置Recordsource? – 2010-11-15 21:53:07

+0

我实际上是在报表的打开事件中设置报表的RecordSource属性,但它需要记录集的名称,ADODB Recordset没有名称属性。 – Sivakanesh 2010-11-17 08:02:25

+1

我在说不要使用记录集 - 只需将Recordsource属性的SQL设置为用于打开记录集的SQL即可。如果有某些原因不起作用,我不会看到它。这是做这件事的标准方式,而不是设置报告的记录集(这是我多年来为编程生活编程而不需要做的事情)。 – 2010-11-18 04:09:21

回答

5

您可以到ADO记录集的报表不绑定在一个MDB,仅在ADP:http://support.microsoft.com/?id=287437

+1

是的,ADODB不可能。所以我刚刚创建了一个make table查询并处理了其中的数据。然后将报告绑定到该表。 – Sivakanesh 2010-11-17 08:06:19

0

我用不上2003的副本,以手,但是从内存中,你只是做

Set Me.Recordset = rs 

只是对微软KB一看,它看起来像我的记忆仍然是加工!

http://support.microsoft.com/kb/281998