2010-10-22 87 views
0

在MS-Access窗體,我附上下面的代碼的事件:MS Access:.RecordSetClone後需要關閉嗎?

Dim frm As Form, rs As Recordset 
Set rs = Me.RecordsetClone 

'do some stuff with rs 
' 
rs.Close 
Set rs = Nothing 
Set frm = Nothing 

我的問題是:需要對rs.Close?它是否甚至是好的(不希望的副作用?)

+2

您應該將您的記錄集變量定義爲rs作爲DAO.Recordset。也就是說,如果你打算宣佈它。在使用RecordsetClone時,幾乎從不會有這種情況。相反,使用WITH/END WITH塊,即'With Me.RecordsetClone'。 – 2010-10-23 01:21:22

+0

@David:With是個好主意。我從來沒有指定DAO部分,因爲我從來沒有引用ADO,但是你可能是對的,有一天我會付出代價的: -/ – 2010-10-23 15:48:05

+0

通過指定它,使得編譯過程需要更少的隱式對象命名空間。雖然我從來沒有見過VBA只有DAO引用纔會錯,但我寧願告訴VBA看什麼,所以它不必「擔心」它。它也只是更好的編碼 - 請記住,代碼的目的之一是通知程序員發生了什麼事情(不僅僅是編譯器),並且在所有情況下指定DAO都會使其清楚。 – 2010-10-24 02:38:26

回答

1

不,不需要關閉,簡單的規則是如果你的代碼沒有打開reocrdset,那麼你不想關閉它。所以,你只需要/需要關閉你打開的東西。

因此,您正在使用現有的內置記錄集,並且未打開該記錄集。將這兩者都設置爲無,因爲它不是必需的,但它可以保持原樣,並且清楚地表明您對該對象所做的意圖。

1

我不認爲世界會結束,但總是關閉你打開的東西。

訪問曾經有一個問題,如果你沒有處理某個對象,它不會退出,但它將最小化任務欄,你將不得不殺死任務。然而,當你將對象設置爲空時,這不會影響你

+0

我的問題是我們在這裏談論的是一個*克隆*,我將它理解爲指向另一個預先存在的對象的指針。 – 2010-10-22 09:55:05

+0

但他沒有打開它 - 表單的RecordsetClone已經存在。 – 2010-10-23 01:19:56