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

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

مغلقمُجاب
بدأه الحوت المضيء في 6 مايو 2013 · 11 رد · 959 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

 

 

انا استخدم  سكول سيرفر 2008

الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك  فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة

#2

و ما الهدف من هذه العملية؟

#3

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

بحيث تفيد هذه الحركة

في ازلة العلاقة

ثم تستطيع تنفيذ التحديث او حذف

ثم اعادة العلاقة

الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك  فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة

#4

اذا كانت قاعده البيانات بهذا الشكل فأنها تفتقد الي الــ normalization و يفضل اعاده النظر في بناء القاعده من الاول مع اعاده هيكلة العلاقات مرة أخري حتي تصبح قاعده البيانات normalized

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

هذا والله أعلم ربما يكون حلول لهذه المشكلة

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5
الحوت المضيء كتب:

الهدف انو احيانا تكون في مشكلة عن التحديث او حذف بيانات اذا كانت هذه في علاقة بين حقلين بحيث تفيد هذه الحركة في ازلة العلاقةثم تستطيع تنفيذ التحديث او حذفثم اعادة العلاقة

هل عم تستعمل ال dataset? هل تتحدث عن PK?

Samir Ibrahim

VFP Blog

VB.NET Blog

#6

نعم اتكلم عن dataset

لا هي Fk

تم تعديل هذه المشاركة بواسطة الحوت المضيء في 8 مايو 2013 في 17:12

الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك  فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة

#7
محمد فؤاد تركي كتب:

اذا كانت قاعده البيانات بهذا الشكل فأنها تفتقد الي الــ normalization و يفضل اعاده النظر في بناء القاعده من الاول مع اعاده هيكلة العلاقات مرة أخري حتي تصبح قاعده البيانات normalizedربما يكون كلامي مؤلم لان القاعده ستعاد من الاساس لكن هذه هي الحقيقة فما بني علي خطأ لا يستطيع ان يستمر بهذا الخطأهذا والله أعلم ربما يكون حلول لهذه المشكلة

انا حاليا يمكن استطيع ان اقول ان القاعدة البيانات الذي لدي هي سليمة

لكن احيانا نجد انفسنا ان نختار خيارات اخرى

الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك  فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة

#8
الحوت المضيء كتب:

انا حاليا يمكن استطيع ان اقول ان القاعدة البيانات الذي لدي هي سليمة

لكن احيانا نجد انفسنا ان نختار خيارات اخرى

 

ساجاوب حسب ما فهمت

 

لنفرض ان لديك جدول customer وهذا الجدول له علاقة مع جدول order اعتمادا على FK field

 

الان انت تريد ان تعدل او تصيف سجلات مرة باستعمال relation و مرة بدونها

 

هناك طريقتان انا استعملتهما

 

1- اضاقة جدول ال customer مرة اخرى الى dataset و حذف اي relation موجودة فيه فيصبح لديك جدولين Customer with relation, customer1 without relation

 

2- استعمال code

        ' save the relation in a variable
        Dim dr As DataRelation = Ds_att2000.Relations("userinfo_DEPARTMENTS")
        ' remove the relation, then do your insert or update that does need the relation
        Ds_att2000.Relations.Remove("userinfo_DEPARTMENTS")
        ' add the relation back to the dataset when finish
        Ds_att2000.Relations.Add(dr)

Samir Ibrahim

VFP Blog

VB.NET Blog

#9

اسف على تاخير في الرد اخي

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

اريد منك قطع  او ازلت العلاقة بفيجول

 

post-273110-0-61921000-1368285974_thumb.

 

ثم اعادتها (العلاقة )  بفيجول

الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك  فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة

#10 أفضل إجابة

أخي الفاضل الحوت المضيء

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

 

اذا كان الامر كذلك

 

فيمكنك تصميم اجراء مخزن لحذف العلاقة و إجراء آخر لاعاده بنائها مرة أخري

 

مثال لحذف العلاقة بين الجدولين

 

Create Proc CutRelation
as
begin

ALTER TABLE Groups
DROP CONSTRAINT FK_Groups_Items

End

 

مثال لاعاده بناء العلاقة عن طريق أجراء آخر

 

Create Proc CreateRelation

as
begin

ALTER TABLE Groups 
ADD CONSTRAINT FK_Groups_Items FOREIGN KEY (GroupCode) 
    REFERENCES Items (ItemCode) 
    ON DELETE CASCADE
    ON UPDATE CASCADE

end

 

بعد تصميم الاسكريبت علي SQL Server الخاص بعمليات الحذف وانشاء العلاقات يمكنك اسناد هذين الاجرائين Stored-procedure الي Button في فيجوال بيسك لتنفيذ هذين الاجرائين

 

وسيكون علي حسب تصوري كالتالي

 

1- الاجراء الاول سيكون لحذف العلاقات

2- الاجراء الثاني لحذف البيانات

3- الاجراء الثالث لاعاده بناء العلاقات مرة أخري بعد حذف البيانات من الجداول المراد حذف البيانات بداخلها

 

مثال لتنفيذ الاجراء المخزن الخاص بحذف العلاقة من داخل VB.Net

 

Imports System.Data
Imports System.Data.SqlClient
Public Class Form1

    Dim SqlCon As New SqlConnection("Server=.\MSSQLExpress;Database=DB;User id=sa;password=11111")
    Dim cmd As New SqlCommand("CutRelation", SqlCon)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SqlCon.Open()
        cmd.CommandType = CommandType.StoredProcedure
        cmd.ExecuteNonQuery()
        MsgBox("Relation Deleted !", MsgBoxStyle.Information, "Delete Relation")
        SqlCon.Close()
    End Sub
End Class
 
ستقوم بعمل نفس الخطوة ولكن مع الاجراء الخاص بإنشاء العلاقة مرة أخري واعتقد انه سيتخلل بينهم اجراء ثالث لحذف البيانات قبل اعاده العلاقة مرة أخري
 
 

 

مثال للكود الذي ستستخدمة لاعاده انشاء العلاقة مرة أخري وقد استخدمنا الاجراء المخزن الثاني وهو CreateRelation وهو لانشاء العلاقة مرة أخري

Imports System.Data
Imports System.Data.SqlClient
Public Class Form1


    Dim SqlCon As New SqlConnection("Server=.\MSSQLExpress;Database=DB;User id=sa;password=11111")
    Dim cmd As New SqlCommand("CreateRelation", SqlCon)


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        SqlCon.Open()
        cmd.CommandType = CommandType.StoredProcedure
        cmd.ExecuteNonQuery()
        MsgBox("Relation Created!", MsgBoxStyle.Information, "Delete Relation")
        SqlCon.Close()
    End Sub
End Class

 

بالتوفيق

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 11 مايو 2013 في 22:50

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#11

جاوب على سؤالي بشكل يستحق الثناء جزاك الله خير استاذي الفاضل محمد فؤاد على ماتفضلت به واسال الله العظيم ان يزيد قدرك وعلمك بارك الله فيك دائما

تم التجربة وتم نجاح التجربة 100% شكر لك دائما

الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك  فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة

#12

بارك الله فيك اخي الكريم

لا شكر علي واجب

 

بالتوفيق

certifiedj.jpg

 

 

Image Hosted by ImageShack.us

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…