2012-04-05 1 views
1

AccessでSubFormsに問題があります。わからないことがあります。 私はコントロール(コンボ)を持つフォーム(frm)を持っており、フォームはサブフォーム(サブフルーム)を含んでいます。 debugmodeでは、2つのブレークポイントを作成します.1つはcombo_AfterUpdateで、もう1つはfrm_AfterUpdateです。私はコンボすべてが罰金だのデータ変更した場合:SubForm.Recordsetの変更中にForm_AfterUpdateが失われる

:(フォームを保存)> frm_AfterUpdate

で停止combo_AfterUpdateで

停止>今私はsubfrm.Form.Recordsetを変更し、私のcombo_AfterUpdateのEventHandlerにコードを追加します

combo_AfterUpdateでストップ>(フォームを保存)> ...

frm_AfterUpdateで無停止! 誰もがなぜ知っていますか?

EDIT:combo_AfterUpdateに実行 ここコード:

If Not IsNull(Me!childID) Then 
    Dim childSubSource As QueryDef 
    Set childSubSource = CurrentDb.QueryDefs("qry_parent_Detail_child_WithParam") 
    childSubSource.Parameters("childID").Value = Me!childID 
    Set frmChildSub.Form.Recordset = _ 
     childSubSource.OpenRecordset(dbOpenDynaset, dbSeeChanges) 
End If 

EDIT: 面白い..私は変更する場合

Set frmChildSub.Form.Recordset = _ 
    childSubSource.OpenRecordset(dbOpenDynaset, dbSeeChanges) 

frmChildSub.Form.Recordsource= childSubSource.SQL 

にイベントが働いています思惑通り。私は親フォームの汚れたプロパティをチェックして、問題がここにあるようです。私がコンボボックスを変更したにもかかわらず、私が新しいフォームを.recordset経由でサブフォームに割り当てると、親フォームの変更は保存されるか、失われます。

挨拶

+0

「変更するsubfrm.Form.Recordset」というコードを投稿できますか?あなたのアップデートがキャンセルされ、フォームのイベントが発生しない可能性があります。 –

+1

なぜコントロールの値が変更された後にフォームのレコードセットをスワップするのか分かりません。私はあなたがここでかなり「非標準的」なことをしようとしていると思っています。コンボの変更がデータベースに保存されているのですか、それともバインドされていないコントロールですか? – HK1

+0

イゴール:ここにコード。 childIDはコンボボックスの値です。 HK1:バインドされたコントロールで、コンボボックスの値に応じてサブフォーム内の別のデータが必要なので、レコードセットをスワップします。私は "link master-/childfields"機能を使用しますが、親レコードセットもスワップしています:/ – Egi

答えて

0

は実際に、それは一種の私には理にかなって...最初のインスタンスで

Set frmChildSub.Form.Recordset = _ 
    childSubSource.OpenRecordset(dbOpenDynaset, dbSeeChanges) 

これは、フォームに新しいレコードをロードし、のさコースには汚れた記録はないので、汚れた陶器は偽のものになるはずです。番目のインスタンスで

frmChildSub.Form.Recordsource= childSubSource.SQL 

は、あなたがそれのデータフォーム/データをロードする次の時間を取得するフォームを語っています。 次のやった場合:

frmChildSub.Form.Recordsource= childSubSource.SQL 
frmChildSub.Form.Requery 

その後、私は最初のインスタンスと同じ動作を期待する - もう一度、汚れではありません - あなたは再び新鮮なレコードセットで持ってMSアクセスを強制しているというだけの理由を。

+0

frmChildSub.Form.Recordset = _ childSubSource.OpenRecordset(dbOpenDynaset、dbSeeChanges) は子フォームのレコードセットを変更していますフォーム私は実際にはインチ彼らはマスター/子フィールドをリンクしていない場合でも、何らかの関連はありますか? – Egi

関連する問題