私は、Access 2003 VBAを使用してBOMを作成するための再帰データを処理しています。メインテーブルに静的スコープを持たせるためのクラスモジュールを作成しました。これは再帰を単純化するようです - BOMをトラバースするとレベルが下がったり上がったりすることがなくなります。私は重複して同じレコードセットを開いているわけではありません。私は代わりに多くをフィルタリングしています。クラスインスタンスの適切な使用
これを実行した後、私はObject-Relation Modelingについて読んで、レコードセットではなくレコードをインスタンス化することに決めました。そのレコードのフィールドはプロパティになります。たくさんの仕事と多くの間違いがあったのですが、私はこのアプローチには利点がないことを認識しました。なぜなら、Accessはテーブルベースだからです。
私のクラスモジュールは以前と同じように役立ちます。私の質問は、以下の2つの代替バージョンについてです。最初のインスタンスは2つのインスタンス(親、子)を使用します。 2番目は1つを使用してから再利用します。明らかに、最初のものはORMの影響を受けます。
これらのいずれかを選択する理由はありますか?また、最後にイタリック体があることに注意してください。私がそれを必要としないなら(私は親についてもっと情報を必要としないので)、それは答えを変えますか?誰でも私の考えを全般的に手助けすることはできますか?
(私はレコードセットを閉じますが、クラスインスタンスは閉じないことに注意してください。私の理解は、VBAインスタンスが閉じて、それを許可するということです。透明性があり、それが動作を期待しています。)
VERSION 1 Property Sub ReviewPart (Parent_Part_ID) Get Parent_Part_ID Create instance of Class --> Get recordset Filter Class recordset (Parent_Part_ID) Exploit Class recordset See if Parent_Part_ID has Childs If it does: Open recordset of Childs For each Child Get Child_Part_ID Create instance of Class --> Get recordset Filter Class recordset (Child_Part_ID) Exploit Class recordset See if Child_Part_ID has Childs If it does: Instance New ReviewPart (Child_Part_ID) Otherwise: Nothing; Move On Next Child Close recordset of Childs Otherwise: Move On Exploit Class recordset (still points to parent)
VERSION 2 Property Sub ReviewPart (Parent_Part_ID) Get Parent_Part_ID Create instance of Class --> Get recordset Filter Class recordset (Parent_Part_ID) Exploit Class recordset See if Parent_Part_ID has Childs If it does: Open recordset of Childs For each Child Get Child_Part_IDCreate instance of Class --> Get recordsetFilter Class recordset (Child_Part_ID) Exploit Class recordset See if Child_Part_ID has Childs If it does: Instance New ReviewPart (Child_Part_ID) Otherwise: Nothing; Move On Next Child Close recordset of Childs Otherwise: Move On Filter Class recordset (Parent_Part_ID) Exploit Class recordset (still points to parent)
回答に感謝します(7/19現在)。しかし、私の無知はまだ改善されていません。私は「受け入れる」ボタンを押しています。私はその質問にどうやって質問するかについて、より多くのことを学ぶことを希望します。 – Smandoli
Google Groupsに「BOMクラスモジュールグループ:*アクセス*」を問い合わせるときに得られるスレッドをいくつか調べましたか?このトピックはアクセスグループの多年草ですが、必ずしもクラスモジュールに取り組まれているわけではありません(ただし、そうすべきです)。 –