0

堆栈溢出。我有一个困扰了太久的问题。目前,我有一个显示联盟数据的表单,带有一个显示“创建新联盟”的按钮。当我单击它时,它会显示一个弹出窗口,允许您输入名称,如下图所示。几乎一切正常,除了在创建新记录后我无法让它显示新记录。请参阅下面的代码-您会了解我正在尝试做什么。

顺便说一句,如果重要的话,“联盟名称”组合框允许您选择记录。我看不出它如何让我的更新失效,但我认为我应该包含这些信息。

这是表格:

我的表格

这是代码:

我的代码

有趣的是,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

我认为部分问题可能与我已将基于选项卡控件的“联盟表单”表单放入“主”表单这一事实有关。也许是因为我试图用某个 ConsortiumID 打开Main表单,所以 ConsortiumID 不适用于Consortium Form。似乎我无法将主人与其孩子联系起来,但过去没有必要这样做。如果这些概念听起来很模糊,请原谅我,因为这只是因为这些概念在我的脑海中还很模糊——这是我的第一个 Access 项目。有人有任何提示吗?

4

1 回答 1

3

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

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

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

于 2012-09-04T19:09:52.653 回答