2014-03-13 20 views
0

我正在使用DAO recorsets,基本的想法是用給定參數指示(限制)多次填充記錄的一個表。解決:如何正確完成DAO vba的訪問數據庫事務?

它似乎工作,但突然當我想再次使用窗體時,它會拋出3022錯誤。當我看到表值時,它們都沒有被複制。我從該表中刪除所有記錄並刷新表格和表格。在我刷新表格之前,表格不顯示任何值。顯示的唯一值是我嘗試在數據庫中保存的最後一個值。

這裏的代碼一點點:

Private Sub add_element(loops_number As Double) 
    i = 1 
    While (i < CDbl(loops_number)) 
     function 
     i = i + 1 
    Wend 
End Sub 

這是工作顯然罰款。

Private Sub populate() 
    Dim db As DAO.Database 
    Dim rst As DAO.Recordset 
    Dim last As DAO.Recordset 
    Set db = CurrentDb() 
    Set rst = db.OpenRecordset("Element", dbOpenTable) 
    Set last = rst.Clone 


    With rst 
    .AddNew 
    If (last.RecordCount <= 0) Then 
     'here I pass input form values to recordset fields ,because its the first row 
     last.Close 
     .Update 
     .Close 
    Else 
     last.MoveLast 
     !Pk = Custom_pk 'Custom_pk is obtained with a function --- not relevant 
     'here I pass remain values from last record to a new one --- because records has the same attributes 
     last.Close 
     .Update 
     .Close 
    End If 
    Set rst = Nothing 
    Set ultimo = Nothing 
    End With 

End Sub 

這就像上次記錄值在功能完成後保持「活動」狀態。我不明白爲什麼會發生這種情況。

元件pk是字母數字例如:「A1」,然後我建立一個函數,將A與1分開,將+1加到數字上並重新連接數值,因此結果爲「A2」

回答

0

我使用自動編號字段作爲主鍵來解析它, PK(字母數字)作爲一個共同的領域,那麼我可以完全像我想要的那樣維護我的vba代碼。

相關問題