当我的表单加载并且我没有收到任何错误消息或代码中断时,我正在我的数据表子表单上运行此代码。我的 debug.print 显示 Recordset rs 充满了应有的 2131 条记录,但我的表单显示了带有 #Name 的单行?在每个领域。我的控件上的控件源属性肯定与我上面列出的字段名称匹配。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 网站上阅读了这篇文章:
记录集必须包含一个或多个具有唯一索引的字段,例如表的主键。
(注意:在这种情况下,此信息似乎是错误的。)