سؤال

أنا أستخدم Access 2003 VBA لمعالجة البيانات المتراكبة لتصنيع BOMS. قمت ببناء وحدة فئة للسماح للجداول الرئيسية بمجموع ثابت. يبدو أن هذا يبسط العودية - إنه يحرمني من عد المستويات إلى أسفل وأعلى مرة أخرى وأنا اجتاز بوم. أنا لا أفتح نفس مجموعة السجلات بشكل زائد؛ أنا تصفية الكثير بدلا من ذلك.

بعد الحصول على هذا جاريا، قرأت عن النمذجة المتعلقة بعسم الكائنات وقررت مثيلها وليس مجموعة سجلات، ولكن سجل. ثم يمكن أن تكون حقول هذا السجل خصائص. بعد الكثير من العمل والعديد من الإثارة من النصر الذي كان مخطئا في الغالب، أدركت أن هذا النهج ليس لديه فوائد لأن الوصول يعتمد على الطاولة.

وحدات الصف بلدي لا تزال تساعد كما كان من قبل. سؤالي حوالي إصدارات بديلة أدناه. أول واحد يستخدم حيتين (الوالد، الطفل). يستخدم الثاني واحد ثم يعزيه ذلك. من الواضح أن أول واحد هو الأورم المتأثر.

هل هناك أي سبب لاختيار واحد من هذه على الآخر؟ أيضا، لاحظ خط مائل في النهاية: إذا لم أكن بحاجة إلى ذلك (لأنني لا أحتاج إلى مزيد من المعلومات حول الأصل)، فهل يغير هذا الجواب؟ هل يمكن لأي شخص أن يساعدني في تفكيري عموما؟

(لاحظ أنني أغلقت السجلات السجلات ولكنها ليست مثيلات فئة. فهمي هو أن مثيلات VBA تغلق أنفسهم والسماح لهم بالقيام بذلك الممارسات المقبولة. يبدو أنني قد اتخذت كود زائف إلى مستويات جديدة من الزائفة ... الهدف هو الوضوح إنها تعمل.)

 الإصدار 1 المراجعة الفرعية الخاصية إنشاء مثيل الفصل -> الحصول على مجموعة السجلاتتصفية مجموعة سجلات الطبقة (child_part_id) استغلال مجموعة سجلات المسجلات الفئة معرفة ما إذا كان Children_part_id لديه تشايلدز إذا كان ذلك: مثيل مراجعة جديدة (child_part_id) خلاف ذلك: لا شيء؛ الانتقال إلى الطفل التالي سجل سجلات الأطفال غير ذلك: المضي قدما استكشاف مجموعة سجلات الطبقة (لا تزال تشير إلى الوالد)
 
الإصدار 2 الخاصية المراجعة الفرعية (PARTER_PART_ID) الحصول على الوالدين_part_id إنشاء مثيل الفئة -> الحصول على سجل سجلات فئة التسجيل السجلات (PARTER_PART_ID) استغلال مجموعة سجلات الفئة (PARTER_PART_ID) معرفة ما إذا كان PRETER_PART_ID يحتوي على تشايلدز إذا كان يفعل: فتح مجموعة سجلات الأطفال لكل طفل احصل على children_part_id إنشاء مثيل الفصل -> الحصول على مجموعة السجلاتتصفية مجموعة سجلات الطبقة (child_part_id) استغلال مجموعة سجلات المسجلات الفئة معرفة ما إذا كان Children_part_id لديه تشايلدز إذا كان ذلك: مثيل مراجعة جديدة (child_part_id) خلاف ذلك: لا شيء؛ الانتقال إلى الطفل التالي سجل سجلات الأطفال غير ذلك: المضي قدما مجموعة سجلات الطبقة تصفية (PARTER_PART_ID) استكشاف مجموعة سجلات الطبقة (لا تزال تشير إلى الوالد)
هل كانت مفيدة؟

المحلول

يبدو أن السابق يمنحك سهولة الاستخدام أفضل من منظور المبرمج، حيث يمكن للمرء أن يبدأ ببساطة بالسجل الذي تهتم به وسهولة الجذر في السجلات المرتبطة فقط عن طريق الوصول إلى خصائص السجل الذي بدأته به.

من ناحية أخرى، يبدو أن الأخير أكثر كفاءة، لأنه ليس تحميل كل سجل قد يكون مرتبطا بالآخر الحالي.

بعض التحسينات المحتملة للنهج الأول الذي قد يساعده في الاقتراب من كفاءة الثانية مع الحفاظ على سهولة الاستخدام:

  • تحميل سجلات الطفل فقط كما هو مطلوب. باستخدام مسافات Get / Set سيسمح لك بتحميل تلك الموجودة في الوقت المناسب، بدلا من كل مرة عند سحب السجل الأصلي من DB.
  • بالتناوب، استخدم انضمام إلى استرداد جميع بيانات الطفل مرة واحدة كجزء من استفسار واحد. لا يزال هذا ما زال يمنحك جميع البيانات المحمولة مسبقا، ولكن من شأنه أن تقلل من عدد الاستعلامات التي يجب عليك تشغيلها للحصول عليها بشكل كبير.

آمل أن يكون بعض المساعدة.

نصائح أخرى

هل فكرت في استخدام مزود MSDatAshape وبناء جملة الشكل لإنتاج السجلات الهرمية ado?

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top