【发布时间】:2012-08-30 21:04:51
【问题描述】:
所以,我有一个 MS Access 数据库应用程序。在这个应用程序中是一个主窗体,其中包含许多子窗体。特别是一个表单有一个下拉框,我用数据库查询中的日期填充它。选择其中一个日期时,我运行一个子例程,该子例程应该使用历史信息更新子表单上的记录集。下面是一些经过编辑的代码(只是从查询中删除了大量字段)
Private Sub pickdate_AfterUpdate()
'''''''''''''''''''''''''''''''''''''''''
' Add review history by selected date
'''''''''''''''''''''''''''''''''''''''''
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT model, entered_date FROM history WHERE entered_date=#" & Me.pickdate.value & "# ORDER BY model DESC", dbOpenDynaset, dbSeeChanges)
If rs.BOF = False Then rs.MoveFirst
While rs.EOF = False
Forms!main!histories.Form.Recordset.AddNew
Forms!main!histories.Form.Recordset![model] = rs![model]
Forms!main!histories.Form.Recordset![entered_date] = rs![entered_date]
Forms!main!histories.Form.Recordset.Update
rs.MoveNext
Wend
End Sub
我在Forms!main!histories.Form.Recordset.AddNew 行收到错误。
我已经尝试过该行的以下版本:
Forms!main!histories.Form.Recordset.AddNew
main!histories.Form.Recordset.AddNew
histories.Form.Recordset.AddNew
Me.Form.Recordset.AddNew
Me.Recordset.AddNew
Me.AddNew
Me.main!histories.Form.Recordset.AddNew
Me!histories.Form.Recordset.Addnew
Me!main!histories.Form.Recordset.AddNew
我实在是束手无策,试图找出问题出在哪里。 该子表单具有存储信息的所有适当框。我给了他们标签以匹配他们将进入他们的数据库列。我尝试将它们的控制源设置为数据库列名,而不是将它们设置为任何内容。我查找了一百种不同的“解决方案”,似乎没有一个适合问题或工作。
我觉得我忽略了一些非常容易的事情。
【问题讨论】:
-
为什么不只是运行附加查询?为什么要遍历记录集?
-
我同意@Remou-将行添加到基础数据集,而不是通过表单
-
我对 Access 和 VBA 编程非常陌生。这个项目实际上是我必须维护和添加功能的旧代码。应用程序的其余部分使用记录集遍历几乎所有内容。我不知道如何进行追加查询。
-
支持表单的记录集必须是正确的类型;它应该是 DynaSet,而不是 ForwardOnly 或 Snapshot。错误 91 是“未设置对象变量”。
-
表单需要是可写的,并且具有添加新记录的能力。表单属性中的 CanWrite、CanRead、CanAdd 等标志是否都设置为 Yes?