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

اخوانى البحث والMaster Details

مغلق
بدأه HosamDahb في 13 سبتمبر 2003 · 5 رد · 1,011 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اسف لتكرار السؤال ولكن لأهميته لى وعدم عصولى على اجابة أسأله كثيرا

لازلت متوقف عن تسليم مشروع مدفوع ثمنه فى مكان عملى بسبب مشكلتين

* الأولى (Master & Details) وهى كيفية استخدام العلاقة بين السابق ذكره فى عمل مستند جديد وحفظ الDetails معه فاذكركم انه يمكن عمل ال Master أولا ثم اضافة Details بعد حفظ الأول ولكن عند حفظ الاثنين مع بعض (Master & Details) تظهر رسالة خطأ بسبب العلاقة بين الجدولين وانوه اننى أستخدم طريقة Currancy Manager

* المشكلة الثانية أرغب فى التحرك داخل ال Currancy Manager من خلال الخاصية Position بعد البحث عن بيان معين سوا كان مفتاح أساسى أم لا وعرض هذا البيان فى نفس الشاشة.

*هل اسلوب ال Currancy Manager جيد فى العمل أم ان هناك أسلوب أفضل

وشكرأ أرجوا الاهتمام بهذه الاستفسارات لأنها فعلا مسببة مشكلة كبيرة لى

** ممكن أعرف كيف ادرج صورة فى رسالة مثل هذه أرسلها لكم

تم تعديل هذه المشاركة بواسطة HosamDahb في 13 سبتمبر 2003 في 11:40

#2

السلام عليكم

لقد توصلت مؤخرا لحل مشكل البحث التى كانت تواجهنى والتى تخص Currancy Manager

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

Dim vue As New DataView(DsWakf.TblWakf)

vue.Sort = "WakfCode"

Dim intIndex As Integer = vue.Find(SearchKeyN)

If intIndex = -1 Then

Console.WriteLine("Row not found!")

Else

CmWakf.Position = intIndex

End If

حيث DsWakf هو اسم الداتا ست

TblWakf هو اسم الجدول داخل الداتا سيت

WakfCode هو اسم حقل البحث

SearchKeyN متغير يحمل قيمة البحث

CmWakf هو "Currancy Manager"

#3

السلام عليكم

بالنسبة للسؤال الأول

إذا أردت أن تقوم بربط جدولين في dataSet واحدة فعليك بـ dataRelation

وتكون كالتالي

Dim dr As DataRelation
        dr = New DataRelation("NameOfDataRelation", _
        ds.Tables("ParentTable").Columns("ID"), _
        ds.Tables("ChildTable").Columns("ID"))
        ds.Relations.Add(dr)

أو عن طريق الـ design time بحيث تقوم بربط العلاقة بينهما في الـ dataSet

طريقة التحديث قم بتحديث الجدول الأول (الأب) ثم الابن أو الجدول التالي

شاهد هذا المثال

Dim ChangeDS As DataSet
        Me.BindingContext(ds, "Customer").EndCurrentEdit()
        ChangeDS = CType(ds.GetChanges, MultiTables.DSCutomOrder)
        If (Not (ChangeDS) Is Nothing) Then
            Try
                              CustomerDA.Update(ChangeDS)
                ds.Merge(ChangeDS)
                ds.AcceptChanges()
                Me.btnUpdateCars.Enabled = True
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End If

قم بإنشاء dataSet جديدة ثم قم بإقاف التحديث لـ dataset الحالية عن

طريق EndCurrentEdit ثم قم بأخذ القيم الحالية في الـ dataSet الجديدة عن طريق

GetChanges ثم قم

بتحديث البيانات في القاعدة بإستخدام dataAdapter

لابد أن يكون لديك عنصرين كـ dataAdapters الأول للأب و الثاني للإبن

سيتم في الأول تحديث قاعدة البيانات عن طريق تمرير الـ dataSet الجديدة

ثم ستقوم بعملية الـ Marge لضم البيانات في الـ dataSet الجديدة في الـ dataSet القديمة

ثم ستنادي السلوك AcceptChanges لـ dataSet القديمة

وعلى هذا سيتم حفظ الـ primaryKey في البيانات فعند إضافتك أو تحريرك

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

في زر أخر بنفس الشكل

السلام عليكم

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

#4

السلام عليكم

ممكن يا اخى تضيف مثال بسيط عن عملية التحديث Master Details

بس Child يكون DATA GRID وParentTable يكون txt عادى

#5

up

#6
Mohamed_ali كتب:
السلام عليكم

ممكن يا اخى تضيف مثال بسيط عن عملية التحديث Master Details

بس Child يكون DATA GRID وParentTable يكون txt عادى

اضم صوتي لصوتك ، ونحن في انتظار الرد على VB 2005 ....

1 - سقوط الإنسان ليس فشلاً ، ولكن الفشل أن يبقى حيث سقط .

2 - الفاشلون قسمان : قسم فكر ولم يفعل ، وقسم فعل ولم يفكر .

-------------------------------------------------------

درس في ADO.NET 2005, التعامل مع الجداول المترابطة في ado.net 2005

درس في الإجراءات الفرعية ( العامة )

درس في ADO.NET من الصفر إلى الإحتراف .

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

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