最善のアプローチを助けることができていない変数の束を渡ししようとする:OpenArgsを使用してパラメータを渡すことについての詳細情報については
、参照。あまりにも多くのコードで、柔軟性がありません。たとえば、2つの値を渡す必要がある場合、その要件が5つの値に増加すると何年もかかりますか?価値観を維持して渡そうとするのは、あまりにも多くのコーディング作業です。
ms-accessの各フォームは、実際にコードで操作できるクラスオブジェクトです。したがって、ここでオブジェクトアプローチを使用すると、コードを少なく書くだけでなく、コードがよりクリーンでモジュラー化され、グローバル変数が不要になり、コードを異なるフォーム間で再利用できることがよくあります。ここで
はどのようにある:
一つの形態は、することができます(実際には、あなたも遅けれオンロードイベントとして使用することができます)上のオープンイベントの形で第二の形で別のフォームを起動する一般的に
PREVIOUSフォームオブジェクトへの参照を取得します。言い換えれば、オブジェクトアプローチをここで使用できます。フォーム上のロードイベントで、私達は行く、そして、
Option Compare Database
Option Explicit
dim frmPrevious as form
:
Set frmPrevious = Screen.ActiveForm
さて、任意のコードをフォームのモジュールレベルで
は、フォームの私はとフォームオブジェクトを宣言する私たちのフォームでは、コード、イベント、コード内の前のフォームからパブリックとして宣言された変数などを自由に使用することができます。
したがって、以前のフォームのディスクへの書き込みを強制し、データを再ロードする場合。
frmPrevious.Refresh
あなたが行く、その後、ID値を設定したい場合:
frmPrevious!ID = some value
そして、あなた二つの形式ならば、あなたもこのようにそのフォームのPUBLIC変数としてフォームが以前宣言し、できることに注意してください
frmPrevious.frmPrevious!ID = some value
だから、単純な形態は、各フォームのコードモジュール内のオブジェクトを宣言(またはあなたは、コード内の値を使用する必要があるものLESTで):深い、あなたが行くことができます。上記のことは、どのコードも前のフォームオブジェクトに対する準備が整っていることを意味します。フォームで恥骨として宣言された関数は、フォームのMETHODとなり、同じように実行することができます。
frmPrevious.MyCustomRefresh
、あるいは請求書番号を生成し、セットアップする前のフォームを強制的にいくつかのオプションのようなもの:
frmPrevous.SetInvoice
または frmPrevious.SetProjectStatusOn
だから、あなたは、前後の値とデータをシャッフルすることができないだけで、しかし、あなたは簡単にあなたがprevousフォームのコードで構築特徴や機能を実行することができます。
実際にコーディング標準として、私のフォームのMOSTには、MyRefreshという擬似関数があります。
このアプローチの美しさは、以前のフォームから+ use + set値を読み取ることができることに注意してください。これにより、コードで値を受け取るだけでなく、前の形式で値を設定することができます。したがって、このアプローチは双方向性です。フォーム間でデータと値を前後にシャッフルすることができます。もう1つの利点は、変数に限らず、フィールド、コントロールの値(イベント、プロパティ)などを使用できることです。
このアプローチは、今までのフォームの多くがあなたの手元にあることを意味します。
変数の全体を渡すようにしないでください。フォームへの参照を渡すとすぐに素敵な準備が整ったオブジェクトができ、このタイプのコーディングの問題は簡単になります。
私はAccessで作業して以来、しばらくしていますが、他のフォームを呼び出し、モジュールレベル/フォームレベルの変数を設定してから、別のフォームを閉じることはできますか? –