الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هي الحلول المطروحة لمشاريع Master & Details

مغلق
بدأه الشهاب الحارق في 3 مارس 2005 · 3 رد · 630 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أخواني الأعزاء عندي سؤال واحد فقط .. وطلب إن أمكن

الطلب قبل السؤال وهو إذا في أحد عمل مشروع يتضمن قاعدة البيانات عبارة عن Master & Details

فقط نريد أن نرى حلول المبرمج المطروحة تجاه هذا النوع من المشاريع .

والسؤال بلا شك مرتبط بالطلب فسؤالي هو

ماهي الطريقة أو الحل الأمثل لعمل Master & Details وما هي الطريقة الأنجع لحذف الصفوف المتكررة Duplicate Rows

بالنسبةِ لي قمت بمايلي :

في الـ Stored Procedure كتب التالي

BEGIN
SELECT m.*,c.*
FROM Main m INNER JOIN Child c
ON m.ID = c.ID
WHERE m.Name LIKE @Name +'%'
END

ثم بعد تحديث الجدول الأب Parent Table قمت بمناداة السلوك التالي

هذا السلوك عمل بالـ #C وقمت بتحويله إلى VB.NET

Public Sub RemoveDuplicateRows( _
    ByVal dTable As DataTable, ByVal colName As String)
        Dim hTable As Hashtable = New Hashtable
        Dim duplicateList As ArrayList = New ArrayList

        Dim drow As DataRow
        For Each drow In dTable.Rows
            Try
                hTable.Add(drow(colName), String.Empty)
            Catch
                duplicateList.Add(drow)
            End Try
        Next

        Dim DR As DataRow
        For Each DR In duplicateList
            dTable.Rows.Remove(DR)
        Next
    End Sub

فهل هذا هو الحل المتكامل لمثل هذه المشاريع أم أن هنالك حلول أكثر سلاسة و أداء منه ؟

في المثال يتضح المقال

#2

الي فهمته من سؤالك انك تريد ان يتم حذف كل السجلات في جدول ال Details عندما تقوم بحذف السجل الاب في جدول ال Master

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

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

جديد مدونتي الشخصية http://www.badwi.com

ادعو لنا بظاهر الغيب

MyBooksExchange.jpg

#3

جزاك الله خير إستاذي محمد بدوي

لالا .. لا أطلب الحذف عن قاعدة البيانات نفسها Data Source و إنما أقصد حذف الصفوف المتكررة من عملية الـ join

عند البحث عن البيانات يعني في الـ Select Statement عن طريق الـ Fill Method

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

الـ Child Table

مثلاً لو كان لدي ثلاثة أشخاص بإسم عبدالله في جدول الاب Main Table ولكن العبادلة لم يشتري منهم أحد سوى الأول

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

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

و جزاك الله خير ,,

في المثال يتضح المقال

#4

السلام عليكم

آسف نسيت أن أكتب أنني وجدت الحل

بالنسبة للمشكلة التالية هو كان السؤال كالتالي

مثلاً لو كان لدي ثلاثة أشخاص بإسم عبدالله في جدول الاب Main Table ولكن العبادلة لم يشتري منهم أحد سوى الأول

عند البحث تكون النتيجة عبدالله واحد فقط الموجود في قاعدة البيانات

الجواب : لا تستخدم INNER JOIN إذا كنت تريد كل اسماء العملاء حتى و إن لم يكون له طلب

ونستخدم الـ LEFT JOIN بهذا الشكل

SELECT m.* s.*
FROM Main m LEFT JOIN Sus s
ON m.SerialNumber = s.SerialNumber
WHERE m.Name LIKE @Name +'%'
END

السلام عليكم

في المثال يتضح المقال

هذا الموضوع مغلق.

مواضيع مشابهة