2012-03-01 6 views
3

フォームで値を変更するときにAccessがテーブルにすぐに値を書き込むようにする方法はありますか?今は、フォームの値を変更してから、値が対応する表に書き込まれる前に、サブフォーム上のフィールドをクリックする必要があります。MS Access - フォームで値を変更した直後にテーブルに書き込む

サウンドはあまり好きではありませんが、特定のコントロールでは現在のデータで有効なオプションを指定する必要があります。ユーザーがサブフォームをクリックするのに十分な知識がない場合、ユーザーが表示するデータは期限切れになる可能性があります。

+1

私は、任意の適切なイベントを考えることはできません、あなたは確かに変更イベントでテーブルを更新したい、と '更新後はありませんあなたがコントロールから移動する必要があります。どのようにいくつかの並べ替えの更新ボタンを更新ボタンを含めてどうですか? – Fionnuala

+0

チケット番号、チケットのステータス、およびそのチケット(サブフォームによって書き込まれた)に関する最新のアクティビティを取得するコンボドロップダウンがあります。ユーザーはチケットのステータスを変更することができますが、レコードが完全になくなるまで、コンボドロップダウンには変更が反映されません(また、テストではテーブルソースも表示されません)。レコードを移動するには、レコードを変更するか、サブフォームをクリックします。コンボドロップダウンは常にEVENTUALLYに更新されますが、私はすぐにそれを望みます。私はAccessが完璧ではないという言い訳をしたくない。私はそれがうまくいくようにしたい。 :) – Ben

+0

@Ben残念ながらアクセスは完璧ではない、ユーザーはその実現に慣れなければならない。 :) – Taryn

答えて

2

あなたの要件のふるまいは、アクセス機能の基本的な設定方法です。最も一般的なシナリオでは、マスターフォームは親テーブルになります。その結果、子レコードをそのようなリレーショナルセットアップに追加する前に、親レコードを書き込んでディスクに保存する必要があります。

また、要件ではない逆のアクセスは、デフォルト操作でもあります。

つまり、フォーカスが親フォームから子フォームに移動するとき、親フォームのレコードがテーブルに書き込まれない理由は明確ではありません。

ここで設定が間違っているか、目に見えている動作を拡張する必要があります。

デフォルトでは、フォーカスをメインフォームからサブフォームに変更すると、メインフォームレコードがテーブルに書き込まれます。また、サブフォームツールのメインフォームからフォーカスを変更すると、サブフォームテーブルに書き込まれるフォームレコード。

2

コンボボックスに一致する場合は、リンクマスターフィールド、つまりコントロール自体の名前として使用できます。コンボでチケットを選択するとすぐにサブフォームが更新されます。

Link Master Fields: Combo1 
Link Child Fields: Field1 
0

ユーザーがLost_Focusイベントでフィールドから移動したときに、レコードの保存を強制できます。

Private Sub MyField_LostFocus() 

    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 

End Sub 
+0

DoMenuItemはAccess 2000で置き換えられ、下位互換性のためにのみ含まれています。http://msdn.microsoft.com/en-us/library/aa203634(v=office.10).aspx – Fionnuala

+0

面白いアクセスウィザードは、この目的は私が上記のコマンドを生成した方法です – ChrisPadgham

+0

はい、MVPはアクセスウィザードに非常に注意するように指示しています(例えば、Bob Larson http://www.tech-archive.net/Archive/)。 Access/microsoft.public.access.gettingstarted/2008-07/msg00093.html – Fionnuala

0

私は同じ問題に直面していましたが、別のシナリオです。私は、サブフォームを持っていないが、保存ボタンの直後に更新されていない分割画面上の同じテーブルのデータシートビュー。 DUPLICATEボタンを押すと、最新のレコードの重複データを取得する代わりに、ポインタを最初のレコードに移動させてから、最初のレコードのデータが重複していました。データは、私が現在のレコードにレコードポインタスティックですぐに更新されたデータを取得していたコードを複製し、必要に応じて同じ最後のレコードを複製される前に

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 

を挿入することにより

経験を共有する。

ChrisPadgham

0

おかげで、ちょうどあなたのフォームモデルでこれを使用します。

Private Sub {your textbox name her}_AfterUpdate() 
    Me.Refresh 
End Sub