2012-10-06 52 views
2

從標題來看,我知道這似乎已經被回答太多次了,但是我有一系列難以理解的問題。這也是我第一次通過帖子尋求幫助,所以我可能忘記提及一些東西。使用VBA在Access中創建記錄集

Function update_location_id() 

    Dim rs As DAO.Recordset 
    Dim db As Database 
    Dim strSQL As String 

    Set db = CurrentDb 
    strSQL = "select id from location" 

    Set rs = db.OpenRecordset(strSQL) 

    MsgBox (rs.RecordCount) 


End Function 

我從這個函數中刪除了幾乎所有的代碼,試圖找出爲什麼我不能得到一個記錄。這個代碼會生成一個「太少的參數,預計在'set rs = ...'行上有一個

但是,如果我將選擇查詢的ID更改爲*,它工作正常,但它返回1。作爲共有3條記錄中的位置表是現在。

只是櫃面其所需的位置表看起來像

id description 
1  "Location 1" 
2  "Location 2" 
3  "Location 3" 

這是造成我拉我的頭髮出來,我真的不能繼續我的項目,如果我不能做如此基本的數據庫操作......從中獲取信息。

參考文獻:Visual Basic for Applications,Microsoft Access 14.0對象庫,OLE自動化,Microsoft Office 14.0 Access數據庫引擎對象,Microsoft Internet控件。

回答

2

通常,當您使用表中不存在的列名稱時出現錯誤「太少參數」,因此將其解釋爲參數。
因此,儘管您提供了表格數據,我還是會再次檢查表名(位置)和列名(id)。
至於「1」,是的,你必須打開記錄,以獲得正確的RecordCount後插入
rs.MoveLast
rs.MoveFirst
。在轉到最後一個之前,記錄集不知道它產生了多少記錄(這個問題還有一些更詳細的信息,現在我不記得了,關於記錄集類型等等)。

+0

Doh,到處都提到使用動態集的記錄數不準確,除非移動到集合中的最後一條記錄。 – user1724496

相關問題