问题:Access 2007,VBA,父子窗体,Recordset不可更新

时间:2012-05-07 18:27:55

标签: ms-access vba

这很复杂。我对Access并不太熟悉,而且我是一名程序员(意思是,我可能会对自己更加努力,而不是看到“简单”的答案)。

所以让我们考虑一下(例子): 我们有一个库数据库的东西。我有一本书的特定副本。我的书可以有几种状态:签出,在架子上,销毁,闻起来很奇怪/粘滞/无法使用....我需要/在Access中有两种形式。一个用于我的书的基本信息,另一个用于实际更新状态。状态发生变化时,需要记录大量数据,因此需要单独的表格。书籍本身只包含基本信息和租赁历史的小子表格;书的形式需要包括现状。我的实际状态表有一个statusid,bookid,timestamp。

现在......因为我不知道Access会有问题...我将我的书和状态表单都保留为未绑定,并用VBA中的recorset /查询填充它们。但是当我试图连接这两个时,它却对我大喊大叫; “没有约束”,它告诉我。我认为这很好,并将查询移动到实际的前端Access Query部分(左侧)和vba之外并适当地绑定我的表单。但现在。它说我的记录集不可更新。我假设因为我使用了连接和嵌套的select语句等来获取本书的当前状态。我只需要能够修改那些文本字段,我可以自己编写插入/更新。我发现网上有一些东西说要创建一个表但我也读过它在多用户环境中不起作用。当图书表单打开并且用户单击按钮以更改我的图书的状态并保存/关闭该状态表单时,我需要能够重新查询图书表单以显示更新的状态。

所以...我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果我理解正确你的问题是你在mainform中有一个复杂的查询并想要打开第二个表单来更新该查询的一个基础表,那么想要在新打开的表单中更改当前记录并保存然后重新查询原始表格? 我知道你是一名程序员,所以在我看来,最通用的方法是: 主窗体上的按钮以模态模式打开新表单并使用正确的记录(确保在模态表单关闭后执行其余原始表单代码),以模态形式执行您的魔术,然后重新查询主表单。 / p>

尝试这样的事情:

Private Sub myButton_Click()
  DoCmd.OpenForm "myEditForm", acNormal, , ID = 4, acFormEdit, acDialog
  me.requery
End Sub