2010-11-15 92 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