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 に答える