Я запускаю этот код в подчиненной форме таблицы данных, когда моя форма загружается, и я не получаю никаких сообщений об ошибках или разрывах кода. Мой файл debug.print показывает, что набор записей rs заполнен 2131 записями, как и должно быть, но моя форма показывает одну строку с именем #? в каждой области. Свойства источника элемента управления в моих элементах управления наверняка соответствуют именам полей, которые я перечислил выше. RS - это переменная уровня формы, и я не закрываю ее и не устанавливаю ничего, пока форма не закроется.
Есть идеи, что я делаю не так?
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
Итак, я только что прочитал это на сайте MSDN.:
Набор записей должен содержать одно или несколько полей с уникальным индексом, например первичный ключ таблицы.
(Примечание :Эта информация кажется ошибочной в данном контексте.)