اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

الإخوة الكرام .. الجدول الرئيسي (TAB) مكون من أحاديث وهي مرتبة على المسانيد وأريد أن أبدأ بترتيبها على الموضوعات

وقائمة الموضوعات بمستوياتها الأربعة (LVL1 – LVL2 – LVL3 – LVL4) في جدول (TAB_Subject) وقد صممته قبل فترة بناء على نصيحة أحد الإخوة ، ويمكن التعديل والإضافة والنقل في شجرة العناوين بلا مشاكل

وفي نموذج (FRM7) تم عرض هذه العناوين على شكل قوائم مع إظهار أحاديثها

011.jpg.0aeed42692ea9b0a04f7535a483cef15.jpg

وحديثاً اطلعت على عدة مواضيع بخصوص شجرة الحسابات وما يشبهها، منها هذا الموضوع في هذا الملتقى

شجرة الحسابات

وبناء على الملف الذي رفعه الأخ  @jjafferr  وبعد عدة تجارب تمكنت من عمل شجرة عناوين في نموذج (TREE)، لكن توجد مشكلتان

* المشكلة الأولى والأهم: هي عدم عرض الأحاديث عند تحديد الموضوع، فبالمقارنة مع الصورة السابقة حيث كانت العناوين على شكل قوائم، فالنتيجة التي توصلت إليها في شجرة العناوين (TREE) هي كما في الصورة .. لم يتم عرض الأحاديث

013.jpg.c5698a198dfb6527b8939f8455542158.jpg

فأين الخطأ

*المشكلة الثانية: وهي أنه عندما قمت بالتعديل على جدول العناوين (TAB_Subject) بحذف بعض العناوين ونقل أخرى حصل خلل في ترتيب شجرة العناوين كما في الصورة

014.jpg.033643c339019bf3be7072dca419a313.jpg

والترتيب الصحيح هو كما في نموذج (FRM7)

015.jpg.85fbbe8754b00e337cde7b071c38bc93.jpg

والسبب أنه في هذا الأخير فإن ترتيب عرض العناوين يكون بناء على (TNO)، لأن هذا الرقم يبقى على التسلسل الصحيح مهما أجري على العناوين من تعديلات، بخلاف ترقيم المستويات (LVL1 .. .. ..) فلابد من تصحيحه ليعود للتسلسل

أما في شجرة العناوين (TREE) فلم أتمكن من جعل الترتيب بناء على (TNO) مع أني حاولت استخدام (order by [TAB_Subject.TNO])

فهل يمكن أن يكون الترتيب فيها بناء على (TNO) فهو أيسر من إعادة تسلسل ترتيب المستويات في كل مرة يحدث فيها تعديل

MZ_SUB 01.rar

قام بنشر (معدل)
1 ساعه مضت, rockjone33 said:

لا يوجد رد!..  🙂

معذرة أخي الكريم .. تأخر الرد لأني أردت أن أضع في الرد آخر ما توصلت إليه تجاربي

وإذا كانت شجرة العناوين سيكون إخراجها كما في الصورة التي أرفقتها فستكون شجرة جميلة 🙂

ولكن ما الذي تقصده أخي  الكريم من إرفاق رموز في الشجرة وما الغاية منها ؟

* واعذرني أخر الكريم لم أفهم قصدك في الفقرة 4

هذا وأحب أن أذكر أني جربت عمل شجرة عناوين بناء على كود آخر وجدته على النت

Dim dbs As Database, rst As Recordset
  Dim nodX As Node
  Set dbs = CurrentDb
  Set rst = dbs.OpenRecordset("TAB_Subject", dbOpenDynaset)
 ' Set rst = dbs.OpenRecordset("SELECT *  FROM TAB_Subject ORDER BY TAB_Subject.Tno;")
  Set nodX = TreeView6.Nodes.Add(, , "A", "الموضوعات")
  With rst
    Do While Not .EOF
      Set nodX = TreeView6.Nodes.Add("A" & CStr(Nz(!NO1)), tvwChild, "A" & CStr(!NO2), CStr(!NO2) & ":" & !Sname)
      nodX.EnsureVisible
      .MoveNext
    Loop
  End With

ونجحت في ذلك، لكن النموذج كان يأخذ وقتا طويلا ليفتح لأن العناوين عندي كثيرة (1872) ولا تزال في طور التحديث، ومن المؤكد عندي أنه سيزيد عددها عن (2000)

 أما بالكود المرفق فهو يفتح بسرعة

 أما آخر ما توصلت إليه، فقد وقفت اليوم على هذا الموضوع

تعديل على الشجرة TreeView

وبناء عليه استطعت عرض أحاديث الموضوع بعدة خطوات

301.png.63677c91d379be20300e2ad7d7ed537a.png

1- جعلت رقم (TNO) يظهر في الشجرة - مع أن ظهوره غير مطلوب- بتغيير بعض الأسطر في الكود مثل

Level2Node.Text = Myset2!Sname

إلى

 Level2Node.Text = Myset2!TNO & Myset2!Sname

2- تصدير هذه القيمة إلى مربع نص   Me.LVL0 = Node.Text

3- حذف الأحرف والمسافات في مربع آخر (LVL000)

4- والآن أصبح لدي المرجع الذي بناء عليه سوف تستدعى الأحاديث من خلال

Me.Recordset.FindFirst "TNO=" & Me.LVL000 & ""

 واستخدمت رقم (TNO) وليس اسم الموضوع (Sname) لوجود أسماء متكررة في العناوين مثل: متفرقات – أبواب متفرقة – فضلها وما جاء فيها ..

هذا أفضل ما استطعت الوصول إليه .. ولكن ألا توجد طريقة أخرى مباشرة لاستدعاء رقم (TNO) أو (ID)

MZ_SUB 02.rar

تم تعديل بواسطه nssj
قام بنشر

السلام عليكم 🙂

انزلت المرفقين ، ولكن الشجرة ما اشتغلت عندي 🙂

بس الحمدلله تجاربي السابقة افادتك 🙂

 

27 دقائق مضت, nssj said:

هذا أفضل ما استطعت الوصول إليه
 

Me.Recordset.FindFirst

وما العيب في هذا الكود ، فهو الاسرع في جلب البيانات 🙂

ولكن تأكد في نهاية الكود ان تفرغ الذاكرة العشوائية من هذه البيانات عن طريق:

rst.close: set rst=nothing

 

جعفر

 

  • Thanks 1
قام بنشر
47 دقائق مضت, jjafferr said:

انزلت المرفقين ، ولكن الشجرة ما اشتغلت عندي 🙂

وأنا كمان ما اشتغلت عندي الملفات اللي نزلتها من النت .. مع إني أضفت المكتبة المطلوبة لأكسس .. وبعد البحث والتنقيب لقيت صفحة بالانجليزي فهمت منها إنو صعب تظهر شجرة العناوين في أوفس 2013  (64) بت .. وهي النسخة اللي عندي

فنزلت أوفس (2021) واشتغلت تمام .. بس معنديش مفتاح تفعيل لها النسخة ومش عارف شو آخرتها 🤔

47 دقائق مضت, jjafferr said:

وما العيب في هذا الكود ، فهو الاسرع في جلب البيانات 🙂

أنا مش اعتراضي على هالكود .. أنا سؤالي إذا كان بالإمكان إحضار (TNO) أو (ID) للموضوع اللي يتم الكبس عليه دون الحاجة لإظهار (TNO) في الشجرة .. لأني بفضل الشجرة بدون أرقام

يعني هل ممكن إحضاره من مصدر بيانات الشجرة اللي في الكود

Sqltext1 = "SELECT [TAB_Subject].[LVL1], [TAB_Subject].[sname] FROM TAB_Subject where ([TAB_Subject].[lvlno] = 1) GROUP BY [TAB_Subject].[LVL1], [TAB_Subject].[sname]"
Sqltext2 = "SELECT [TAB_Subject].[LVL1], [TAB_Subject].[LVL2], [TAB_Subject].[sname], [TAB_Subject].[TNO] FROM TAB_Subject where ([TAB_Subject].[lvlno] = 2) GROUP BY [TAB_Subject].[LVL1], [TAB_Subject].[LVL2], [TAB_Subject].[sname], [TAB_Subject].[TNO]"
Sqltext3 = "SELECT [TAB_Subject].[LVL2], [TAB_Subject].[LVL3], [TAB_Subject].[sname], [TAB_Subject].[TNO] FROM TAB_Subject where ([TAB_Subject].[lvlno] = 3) GROUP BY [TAB_Subject].[LVL2], [TAB_Subject].[LVL3], [TAB_Subject].[sname], [TAB_Subject].[TNO]"

 

20 دقائق مضت, rockjone33 said:

ما فيش نمبر ايه .key strang.  ..  🙂

أخي الكريم .. معلش مش فاهم قصدك لأني مش مبرمج .. أنا بس بحب التجارب 😁 .. فإذا تكرمت تراعي وضعي الصعب وتعتبر حالك بتشرح لطالب رابع ابتدائي 🙂

قام بنشر (معدل)
5 دقائق مضت, rockjone33 said:

يوجد تكرار في المواضيع..!

نعم .. في العناوين الفرعية .. وأشرت إلى ذلك في مشاركة سابقة، لذلك في الملف المرفق طلبت الأحاديث باستعمال (TNO) لأنه لا يتكرر

فهو أفضل من معالجة تكرار الأسماء في هذه المرحلة

تم تعديل بواسطه nssj
قام بنشر
6 دقائق مضت, nssj said:

بس معنديش مفتاح تفعيل لها النسخة ومش عارف شو آخرتها

انا اشتريت نسخة مايكروسوفت اوفيس 2021 Pro Plus الذي يحتوي على مايكروسوفت اكسس بمبلغ 39.99$ يعني حوالي 40$ من هنا :

https://store.techspot.com/sales/microsoft-office-professional-plus-2021-for-windows?utm_source=techspot.com&utm_medium=referral&utm_campaign=microsoft-office-professional-090922

جعفر

قام بنشر (معدل)
3 ساعات مضت, nssj said:
With rst
    Do While Not .EOF
      Set nodX = TreeView6.Nodes.Add("A" & CStr(Nz(!NO1)), tvwChild, "A" & CStr(!NO2), CStr(!NO2) & ":" & !Sname)
      nodX.EnsureVisible
      .MoveNext
    Loop
End With

 

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

كذلك إذا الشجرة فقط للعرض ليس بها إضافة ولا تعديل ولا حذف فيفضل عدم استخدام النوع dbOpenDynaset بل يستخدم dbOpenSnapshot

تم تعديل بواسطه AbuuAhmed
  • Thanks 1
قام بنشر
2 ساعات مضت, rockjone33 said:

نصيحه خلك على 2016 او 2019

شكراً على النصيحة أخي الكريم .. وأنا كنت أستخدم (2019) وكنت مبسوط عليه .. لكن حصلت معي سابقا مشاكل في تطبيق بعض الأكواد وأخذت أحذف وأحمل أكثر من إصدار .. والنتيجة: لم يعد يشتغل معي (2019) ؟؟؟ .. على كل حال أنا أفكر بعمل فورمات للجهاز قريبا وعندها سأعود له

 

منذ ساعه, AbuuAhmed said:

كذلك إذا الشجرة فقط للعرض ليس بها إضافة ولا تعديل ولا حذف فيفضل عدم استخدام النوع dbOpenDynaset بل يستخدم dbOpenSnapshot

وأنا أتوه عند استخدام المصطلحات الإنجليزية وإن كانت بسيطة 🙂 .. لذلك لم أفهم مقصدك أخي الكريم

 

منذ ساعه, AbuuAhmed said:

رجعت لقاعدة البيانات خاصتك وفي جدول الموضوعات ولم أعرف أحدد الأب من الإبن "ضاعت الأنساب" 🙂 ، فهل تستطيع توضح لي مثال/سطر واحد وكيفية ربط الإبن بالأب؟

بخصوص الأب والابن لهذه الطريقة 🙂، فأنا اختصرت الحديث عنها بسبب البطء عند فتح النموذج، كما أن هذه الطريقة تستدعي إضافة حقلين لجدول الموضوعات (TAB_Subject)، حقل للأب (NO1) وحقل للابن (NO2)، وأنا فضلت الإبقاء على المستويات الأربعة (LVL1 – LVL2 .. ..) لأنها الطريقة القديمة التي مشيت عليها وجربتها في الحذف والإضافة والتعديل وعرض القوائم بلا مشاكل

وأرفقت لك الملف التجريبي الذي فيه طريقة العرض بالاعتماد على هذا الكود

MZ_SUB 03.rar

قام بنشر
23 دقائق مضت, rockjone33 said:

هل اضم القائمة في الشجره.

أي قائمة تقصد أخي الكريم ؟

وهل يمكن عرض الشجرة من اليمين إلى اليسار كما في ملفي المرفق

23 دقائق مضت, rockjone33 said:

يوجد تحويل من اي جدول الى شجره مصفوفه راجع موضوع @Moosak.. ☝

أين هذا الموضوع ؟

قام بنشر (معدل)

تم التعديل على جدول الموضوعات بتبديل اسم حقلين No1 ، No2 وتم إضافة حقل Error لمعرفة السجلات التي فشلت في الإضافة.
التعديل على الأسماء لتساعدني في التركيز ، وأنصح دائما باستخدام اسماء تدل على معناها.
كذلك قمت بتقليص طول الحقلين أعلاه إلى 50 رمز وأنصح بتقليصه من طرفكم بعد التأكد من أقصى طول مطلوب.
جدول TAB_Subject_X يجب تبديل حقل ID من AutoNumber إلى Number
العلاقات بين الجداول تحتاج إلى إعادة دراسة استعن بغيري 🙂 .

تم تصحيح الكود ليصبح كالتالي:
 

  Set rst = dbs.OpenRecordset("TAB_Subject", dbOpenDynaset)
  rst.Sort = "LVLno,Parent,Code"    'جديد
  Set rst = rst.OpenRecordset       'جديد

  Set nodX = TreeView6.Nodes.Add(, , "A", "الموضوعات")
  With rst
    Do While Not .EOF
      Err.Clear
      Set nodX = TreeView6.Nodes.Add("A" & CStr(Nz(!Parent, "")), _
                           tvwChild, "A" & CStr(!Code), _
                           CStr(!Code) & ":" & !Sname)
      
      'مؤقتا حتى يتم التأكد من سلامة كل البيانات ------------
      .Edit
        !Error = Err.Number <> 0
      .Update
      '-----------------------------------------------------
      
      'If Err.Number = 0 Then nodX.EnsureVisible     'هذا السطر يسبب بطء شديد
      .MoveNext
    Loop
    
    'مؤقتا حتى يتم التأكد من سلامة كل البيانات ------------
    MsgBox "إجمالي السجلات: " & .RecordCount & vbCrLf & _
           "السجلات المضافة: " & TreeView6.Nodes.Count & vbCrLf & _
           "السجلات الفاشلة: " & .RecordCount - TreeView6.Nodes.Count _
           & vbCrLf & vbCrLf & _
           "راجع جدول الموضوعات حقل Error"
    '-----------------------------------------------------
  End With
  
  rst.Close

MZ_SUB 04b.rar

تم تعديل بواسطه AbuuAhmed
  • Like 2
قام بنشر
7 ساعات مضت, AbuuAhmed said:
 'هذا السطر يسبب بطء شديد

فعلا أخي الكريم .. السطر المذكور كان سبب البطء والآن أصبح سريعا، بل أسرع من الكود الذي استخدمته، حتى أنني جربته على ملف قديم كان عدد العناوين فيه (8080) حيث كنت جعلت لكل رقم آية في التفسير عنواناً مستقلاً، ثم عدلت عن ذلك، لكنه مع ذلك أصبح يفتح أسرع من الملفات السابقة المرفقة مع أن عدد العناوين فيها أقل بمقدار الربع

وأحسنت أخي الكريم بوضع حقل للأخطاء، فقد عالجتها بحمد الله

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

ولكن يوجد خلل في ترتيب عرض الموضوعات الرئيسية فهي كما في الصورة:

 800.png.16ef943ef2dfe4cf12c5308bd99e36cf.png

والترتيب الصحيح

 801.png.1b31d4badeec1d159fd56a30eb7c3260.png

وإذا كان يمكن معالجة هذا الأمر فقد تكون هذه الطريقة أفضل لسرعتها، ولأنه يمكن استدعاء الأحاديث المرتبطة بالموضوع دون الحاجة لإظهار (TNO) في شجرة العناوين

وبانتظار رأي الأخ الكريم rockjone33  ومناسبة هذه الطريقة لطبيعة عمله

7 ساعات مضت, AbuuAhmed said:

العلاقات بين الجداول تحتاج إلى إعادة دراسة استعن بغيري 🙂 .

أنا بانتظار إرشادات الإخوة الكرام ونصائحهم 🙂

قام بنشر

استفسار بخصوص هذه الطريقة .. ألا يمكن الاستغناء عن ظهور الأرقام في الشجرة أم أنها ضرورية لترتيب العناوين ؟

999.png.ef1c46651ba17f3af85804621a9214cc.png

قام بنشر

جرب الآن والتعديل في الآتي:
 

  'rst.Sort = "LVLno,Parent,Code"               'ترتيب نصي
  rst.Sort = "LVLno,CLng(Parent),CLng(Code)"    'ترتيب رقمي

وهنا أيضا:
 

  For Each nodX In TreeView6.Nodes
    nodX.EnsureVisible
    nodX.Expanded = False
    'nodX.Sorted = True     'لا تستخدم هذا السطر لأنه سيخرب الترتيب السابق
    nodX.Bold = True
    nodX.Selected = False
  Next

 

MZ_SUB 05.rar

  • Like 2
قام بنشر

تمام أخي الكريم الترتيب صار مزبوط

ولكن هل بالإمكان أن يكون الترتيب بناء على (TNO) بغض النظر عن أرقام (parnet) و (code) فقد يكون أسلم بالنسبة لي عند التعديل بالحذف والإضافة على العناوين لأني ضامن أنه سيبقى على التسلسل المطلوب

وكيف يمكن أن يكون العرض في البداية كما في هذه الصورة .. حاولت بجعل الخيارات كما في الملفات السابقة التي أرفقتها بس ما زبطت

005.png.d11fb34708e3b1e5dc2bfe13d670c45a.png

ومرفق الملف بعد تصحيح الأرقام

واعذورني لبضع ساعات فسأكون خارج التغطية 😀

MZ_SUB 06.rar

قام بنشر

تم التعديل ، وهذه المرة انسخ الكود كاملا لأنه حصل أكثر من تعديل.

2 ساعات مضت, nssj said:

هل بالإمكان أن يكون الترتيب بناء على (TNO) بغض النظر عن أرقام (parnet) و (code) فقد يكون أسلم بالنسبة لي

وقد يكون غير جيد لتحميل الشجرة.
لا أعرف لماذا ثلاثة معرفات ID و Code و TNO؟

حاليا أرى أن لاحاجة لحقل ID وإذا أردت ربطه بجدول آخر فاربطه بحقل Code
كذلك حقل TNO لماذا هو "كسري" إن صح التعبير أي Double لماذا لا يكون Integer أو Long Integer؟

MZ_SUB 07.rar

قام بنشر (معدل)
5 ساعات مضت, AbuuAhmed said:

كذلك حقل TNO لماذا هو "كسري" إن صح التعبير أي Double لماذا لا يكون Integer أو Long Integer؟

لغرض إضافة سجل بين السجلات، وهو حقل موحد في جميع الجداول وهو مسؤول عن الترتيب فقط، وكود الإضافة الذي اعتمدته يتطلب الترقيم العشري.

أما لماذا طلبت أن يكون ترقيم شجرة العناوين بناء عليه إن أمكن

فلأنه الأيسر علي عند إضافة عناوين جديدة ونقلها وتغيير ترتيبها، وهو أمر أحتاجه كثيرا

والأكواد التي اعتمدتها للإضافة هي في نموذج (TAB_Subject)

وكما ذكرت سابقاً فأنا تعرفت على هذه الطريقة في الترقيم (Code - Parnet) حديثا ، وبالتحديد قبل أسبوعين، لذلك أنا غير متمرس عليها وقد أجد صعوبة في التعامل معها عند إضافة العناوين

والطريقة التي اتبعتها في الترقيم الفرعي (code) هي الترقيم المتسلسل لكل مستوى

* فعناوين المستوى الأول أرقام (code) فيها تبدأ من (1) إلى (100)

* الثاني من (100) إلى (999)

* الثالث من (1000) إلى (9999)

* الرابع من (10000)

وعند إضافة عنوان يتم إضافة الرقم التالي لآخر رقم حسب المستوى باستخدام (Dmax)

وعندها تصبح الأرقام غير متسلسلة، وترتيبها في الشجرة لن يكون بالشكل المطلوب

وكمثال على ذلك أضفت عنوانين عنوان (جديد2) في المستوى الثاني ، و (جديد3) في المستوى الثالث، وترتيبها كما في الصورة:

06.png.82609280e9073c90236ff263b70f4868.png

 

وهي تظهر في الشجرة هكذا

 061.png.3170c5869c5cfc73537cf29957919936.png

 

وجربت أن أغير الترتيب في الكود إلى

rst.Sort = "LVLno,TNO"

 

ولا أدري إن كان تصرفا صحيحاً أم لا .. لكن ترتيب العنوانين المضافين أصبح في الموضع الصحيح لأن ترتيب (TNO) يبقى متسلسلا بعد الإضافة والنقل

063.png.28991b3929e700778a45c8a86ac3cdd3.png

ولا أدري أيضا إن كانت هذه هي الطريقة الصحيحة لترقيم حقلي (Code - Parnet) وها هناك طريقة أفضل خاصة عند الإضافة والحذف والنقل

لكن هذا الذي أعرفه لحد الآن

ومرفق الملف مع أكواد الإضافة بآخر تحديثاتها

 

57 دقائق مضت, AbuuAhmed said:

كنت ناسيها ، تم الاستفادة من خاصية Tag

وأنا جهزت هالمشاركة قبل هذا التحديث 😀 .. فما هو مجال تأثير هذه الخاصية أخي الكريم

 

منذ ساعه, rockjone33 said:

هل يوجد تعديلات ..  🙂

جزاك الله خيرا أخي الكريم .. شجرة جميلة .. ولكني أحتاج للتجربة لمعرفة هل هناك تعديلات مهمة مطلوبة أم لا

MZ_SUB 09.rar

تم تعديل بواسطه nssj
قام بنشر

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

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

  • Thanks 1
قام بنشر

أخي الكريم rockjone33 بخصوص الإضافة والتعديل على العناوين فهو من نموذج (TAB_Subject) وليس من شجرة العناوين

شجرة العناوين لعرض الموضوعات وأحاديثها فقط

هذا ما أراه مناسبا

والتعديل يشمل إضافة عناوين جديدة وحذف بعض العناوين والتقديم والتأخير بين بعض العناوين

وهو يسري على المستويات الثاني والثالث والرابع، أما المستوى الأول وهو الأبواب الرئيسية فلا تعديل عليها

وأكواد الإضافة والنقل كلها تعمل على حقل (TNO) وهي موجودة في الملف المرفق

ولم أصمم بعد كودا لإضافة عنوان من المستوى الرابع لعدم حاجتي له في هذه المرحلة .. هذا المستوى سيأتي دوره لاحقا

 

منذ ساعه, AbuuAhmed said:

نسخة تضم تعديلي وتعديلك.

ليس في هذا الملف آخر التعديلات على نموذج (TAB_Subject)

لذلك أعدت رفعه

كما وأنه كانت تظهر لي هذه الرسالة عند فتح الشجرة

 0999.png.970d814ad3d61151e9011121d185eae2.png

وحصلت معي بعض المشاكل عند محاولة إضافة العناوين

ولما غيرت اسم الحقل (Parent) إلى (Parentx) سارت الأمور عندي بشكل جيد ولم تظهر الرسالة

MZ_SUB 11.rar

قام بنشر

هل يمكن عرض الموضوعات التي فيها أحاديث فقط 🤔

مع العلم أنه يوجد في جدول (TAB_Subject) حقل (Total) وهو لبيان عدد الأحاديث في هذا العنوان

ويتم تحديثه عند فتح نموذج (TAB_Subject) بهذا الكود

Private Sub Form_Load()
CurrentDb.Execute "UPDATE TAB_Subject SET TAB_Subject.Total = DCount(""*"",""[TAB_Subject_X]"",""[SUB_ID]="" & [ID])"

ولأني أحب التجارب جربت أن أغير في كود الشجرة

 Set rst = dbs.OpenRecordset("SELECT * from TAB_Subject ((TAB_Subject.Total)>0)", dbOpenDynaset)

وطبعا التجربة فاشلة 😅

 وإذا كان هذا ممكنا سيكون مفتاحا لي للتجارب التي سأجريها لمحاولة عرض أحاديث مسند معين وليس كل الأحاديث

قام بنشر

هل تقصد أخي الكريم عمل جدول مستقل لكل مستوى من العناوين؟

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

02.png.88170c94b50704fd07856c431b9454cb.png

 

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

 025.png.b5a4e14331f107d8d43a96e735a5dfc4.png

 

ثم انقطع الاتصال معه فأكملت الطريق لوحدي

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

وعلى الرغم من أن ذلك سيأخذ وقتا وسأزعجكم بكثرة الأسئلة والاستفسارات 🙂 لأنه أمر جديد علي

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

فسأستعين بالله وأعيد العمل في كل ما يتعلق بالترتيب على الموضوعات

بانتظار رأي أهل الخبرة الكرام 🙂

قام بنشر

في الموقع مدرستين
مدرسة تناصر الجدول الواحد ولها أسبابها.
وأخرى تناصر تعدد الجداول ولها أسبابها.

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

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

طبعا أنت مشروعك محدود المستويات ولن يحتاج إلى مستويات مفتوحة.
وأعتقد لن ترى أي عون من معارضي أي مدرسة، فـ "احسبها صح" قبل قيامك بالتغيير ، والله الموفق.

سامحني هذه آخر مشاركة لي في هذا الموضوع.

  • Like 1
قام بنشر (معدل)
8 ساعات مضت, AbuuAhmed said:

سامحني هذه آخر مشاركة لي في هذا الموضوع.

بارك الله فيك أخي الكريم .. كفيت ووفيت

أنا كان استفساري عما إذا كانت هناك آلية لجعل الشجرة تعمل بشرط، لأن هذا سينفعني عند محاولة عرض شجرة العناوين لمسند معين: العناوين التي لها أحاديث  في هذا المسند فقط، لأن الملف الأصل عندي (TAB) مرتب على المسانيد

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

8 ساعات مضت, AbuuAhmed said:

أنا من أنصار الجدول الواحد وقد مررنا بتجربة أنت وأنا ونجحت التجربة بشكل ممتاز

 نعم والحمد لله نجحت بشكل ممتاز، مع أنني عندما حاولت حذف الملف الفرعي الذي تعرض فيه الأحاديث لاسبداله بملف فرعي آخر كانت تخرج عدة رسائل

 1002.png.98d114320c383c74e07fc2bdf9ddbd94.png

2001.png.7bff8d8ac27f3cde4bd79327457f09e8.png

 

ولا زالت التجارب جارية

المهم في الأمر .. أنني كنت مرتاحاً لهذا التقدم دون الحاجة لتغيير هيكلة جدول الموضوعات وإعادة تقسيمه لأن هذا الأمر لن يكون سهلاً

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

لذلك لما قرأت كلام الأخ rockjone33  : (ان يكون منفصل لكل لجدول .. ..) ظننت أنه يقترح عمل جدول لكل مستوى وأنه الأفضل

لكن قولك أخي الكريم rockjone33 في مشاركتك الأخيرة

4 ساعات مضت, rockjone33 said:

لا تسرع ايه تقسيم انت عارف !! اي اكثر من جدول سحب وضم

يعنني أنني أخطأت في فهم كلامك .. فأنا أولاً أعتذر عن سوء الفهم

وثانيا أنا مرتاح أنه يمكنني الاستمرار على هذا نهج الجدول الواحد لأن التغيير لن يكون سهلا

هذا مع العلم أنني قمت بتجربة لتقسيم الجدول إلى أربعة، ولم يأخذ مني الأمر ربع ساعة

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

ولو تم جمعها باستعلام فبأي رقم سأربط الموضوعات بالأحاديث ولدي أكثر من ترقيم وأكثر من مستوى، فأكثر الأحاديث مرتبطة عبر المستوى الثالث وبعضها بالثاني والقليل منها بالرابع

وإذا كنت بحاجة لاستعلام لضم هذه الجداول الأربعة فلماذا التقسيم من الأصل

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

وبانتظار نتيجة عمل الأخ الكريم rockjone33

تم تعديل بواسطه nssj

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information