2017-06-01 77 views
0

我正在使用DAO中的事務處理在Access中開發應用程序。我使用一個類來表示從另一個源導入的數據體。除此之外,這個類包含一個記錄集詞典,每個記錄集都添加了一條新記錄或編輯了一條現有記錄,具體取決於另一條記錄是否存在相同的主鍵。我從普通代碼模塊中的另一個過程創建此類的一個實例,並使用該類的屬性和方法執行分析並完成數據提取。如何在事務處理期間訪問更新的DAO記錄集屬性?

在一個過程中,我想隨後編輯每個記錄集最近添加或編輯的記錄,以便通過類的方法來擴充已經對這些記錄進行的操作。問題是,在事務開始處理之後,.Recordcount屬性在事務提交之前似乎不會更新,並且看起來不像我可以在提交之前爲新添加/編輯的記錄設置書籤它。當試圖將書籤設置爲剛剛添加的記錄(Recordcount屬性仍然爲0)時,後一個問題會引發「No Current Record」錯誤。

我正確的理解,DAO書籤不是一種可行的方式來回憶可能在提交交易之前添加的記錄嗎?還有其他更好的方法嗎?或者有沒有人有任何其他建議?

回答

0

事實證明,儘管.Bookmark屬性在事務過程中不可用,但.LastModified屬性是一個指向我想要訪問的記錄的書籤指針。我只是去從:

Private Sub Test() 

dim vBookmark as Variant 
dim wsp as Workspace 
dim rs as DAO.Recordset 
dim rs2 as DAO.Recordset 

set wsp = DBEngine.Workspaces(0) 
set rs = CurrentDB.OpenRecordset("TableName", dbOpenTable) 

wsp.BeginTrans 

'... Make some record active 

vBookmark = rs.Bookmark 
'Note:^Error is thrown here when recordset has 0 records 

'... Later 

set rs2.Bookmark = vBookmark 

wsp.CommitTrans 

End Sub 

要這樣:

Private Sub Test() 

dim vBookmark as Variant 
dim wsp as Workspace 
dim rs as DAO.Recordset 
dim rs2 as DAO.Recordset 

set wsp = DBEngine.Workspaces(0) 
set rs = CurrentDB.OpenRecordset("TableName", dbOpenTable) 

wsp.BeginTrans 

'... Make some record active 

vBookmark = rs.LastModified 
'Note:^Correctly stores bookmark even during an uncommitted transaction 

'... Later 

set rs2.Bookmark = vBookmark 

wsp.CommitTrans 

End Sub 
0

如果您需要引用記錄但無法通過書籤,請使用類型變量的靜態數組掛起數據。使用數組中的其中一個元素充當排序的書籤。要處理數組以查找書籤,請使用數組中書籤的索引值保留一個靜態變量。

希望有助於一些。

+0

感謝您的輸入@RICHARD Pietrzak。我曾考慮過這個問題,但更可能使用集合或字典,因爲它們被索引以進行快速查找。即使如此,我正試圖避免使用索引號,因爲如果記錄從記錄集中添加或刪除,它們可能會更改。我想我可以創建用於添加/刪除重新索引數組的記錄的過程(或更好的方法),但似乎可能有一種更有效的方法來做到這一點。我會給這個或某種混合開槍並讓你知道它是如何發生的。如果任何人有任何明智的想法,請讓我知道! – jemmell

相關問題