我在我的表單加載時在我的數據表子窗體上運行此代碼,並且沒有收到任何錯誤消息或代碼中斷。我的debug.print顯示Recordset rs充滿了2131條記錄,但是我的表單顯示了單行的#Name?在每一個領域。我的控件上的控件來源屬性絕對與我上面列出的字段名稱匹配。 RS是一個表單級變量,在表單關閉之前我沒有關閉它或將其設置爲空。在內存中,獨立,斷開連接的ADO記錄集
任何想法我做錯了什麼?
Set rs = New ADODB.Recordset
rs.Fields.Append "TimesUsed", adInteger
rs.Fields.Append "strWorkType", adVarWChar, 150
rs.Fields.Append "DateLastUsed", adDate
rs.Fields.Append "SelectedYN", adBoolean
Set rs.ActiveConnection = Nothing
rs.CursorLocation = adUseClient
rs.LockType = adLockBatchOptimistic
rs.Open
Dim sSQL As String
sSQL = "MyComplicated SQL Statement Ommitted from this SO Question"
Dim r As DAO.Recordset
Set r = CurrentDb.OpenRecordset(sSQL, dbOpenDynaset, dbSeeChanges)
If Not (r.EOF And r.BOF) Then
r.MoveFirst
Dim fld
Do Until r.EOF = True
rs.AddNew
For Each fld In r.Fields
rs(fld.Name) = r(fld.Name).value
Next
rs.Update
r.MoveNext
Loop
End If
r.Close
Set r = Nothing
Debug.Print rs.RecordCount '2131 records
Set Me.Recordset = rs
OK,所以我剛剛看了this on the MSDN site:
記錄集必須包含一個或多個字段是唯一索引,如表的主鍵。
(注意:此信息似乎是在這種情況下錯誤的。)
這是一個小的表(4場)之後。但我想我從來沒有真正爲企業開發過,因此我習慣於將大量數據(10,000條記錄,有時甚至更多)引入數據表視圖。在我們的服務器中使用千兆位以太網和快速硬盤驅動器後,即使我們在ODBC鏈接表中使用DAO,我也沒有收到用戶的投訴。所以,我並沒有真正地重複我的方法,我只是說「迄今爲止」它實際上工作得很好。 – HK1