创建新记录后,我无法让我的表单在Access 2010中显示它

时间:2012-09-04 15:55:44

标签: ms-access access-vba ms-access-2010

StackOverflow的。我有一个问题,我一直在努力解决问题。目前,我有一个显示联合体数据的表单,其中一个按钮显示“创建新的联盟”。当我单击它时,它会显示一个弹出窗口,允许您输入名称,如下图所示。几乎所有东西都可以正常工作,除非我在创建新记录后无法显示它。请参阅下面的代码 - 您将了解我正在尝试做什么。

顺便说一下,如果重要的话,“Consortium name”组合框允许您选择记录。我不知道它是如何关闭我的更新,但我认为我应该包括这些信息。

以下是表格:

My form

以下是代码:

My code

有趣的是,StackOverflow在编辑后似乎没有正确地缩进代码 - 我能够成功地使用新的测试帖子。那好吧。我也是这样的小说:

Private Sub CreateConsortiumButton_Click()
    If IsNull(Me.ConsortiumNameText) Or Me.ConsortiumNameText = "" Then ''insert better validation here
        MsgBox "Please enter a valid consortium name."
    Else
        '' Create a new Consortium record with the ConsortiumNameText field on the popup window
        Dim rst As DAO.Recordset
        Set rst = CurrentDb.OpenRecordset("Consortium")
        rst.AddNew
        rst("Consortium name").Value = Me.ConsortiumNameText
        ConsortiumID = rst("ConsortiumID").Value
        rst.Update
        '' Now, create a corresponding record in the ResearchContributions table
        Set rst = CurrentDb.OpenRecordset("ResearchContributions")
        rst.AddNew
        rst("ConsortiumID").Value = ConsortiumID
        rst.Update
        MsgBox "Consortium " & Me.ConsortiumNameText & " successfully created."
        '' Change the form's combo box to reflect the new record
        Forms!Main!NavigationSubform!ConsortiumNameCombobox = Me.ConsortiumNameText
        '' Close popup
        DoCmd.Close
        '' Attempt to set the record on the main form to the newly created one - NOT WORKING!
        DoCmd.OpenForm "Main", acNormal, , "[ConsortiumID] = " & ConsortiumID
    End If
End Sub

我认为问题的一部分可能与我将“Consortium Form”表单(基于选项卡控件)放入“Main”表单的事实有关。也许是因为我尝试使用某个ConsortiumID打开 Main 表单,因此ConsortiumID不适用于 Consortium表单。看起来好像我无法将主人与其孩子联系起来,但这在过去并不是必需的。请原谅我,如果这些概念听起来模糊不清,因为这只是因为概念在我的脑海中是模糊和混淆的 - 这是我的第一个Access项目。有人有任何提示吗?

1 个答案:

答案 0 :(得分:3)

好的,我想我明白了。我添加了以下代码:

DoCmd.OpenForm "Main"
DoCmd.Requery
DoCmd.SearchForRecord , , acFirst, "[ConsortiumID] = " & ConsortiumID

首先,打开表单,然后重新查询能够注册新项目在数据库中的事实,然后使用SearchForRecord打开它。 NEATO。感谢大家。