كيفية قطع العلاقة بين حقلين لجدولين وثم اعادتها مرة اخره بفيجول بيسك ؟
انا استخدم سكول سيرفر 2008
كيفية قطع العلاقة بين حقلين لجدولين وثم اعادتها مرة اخره بفيجول بيسك ؟
انا استخدم سكول سيرفر 2008
الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة
و ما الهدف من هذه العملية؟
الهدف انو احيانا تكون في مشكلة عن التحديث او حذف بيانات اذا كانت هذه في علاقة بين حقلين
بحيث تفيد هذه الحركة
في ازلة العلاقة
ثم تستطيع تنفيذ التحديث او حذف
ثم اعادة العلاقة
الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة
اذا كانت قاعده البيانات بهذا الشكل فأنها تفتقد الي الــ normalization و يفضل اعاده النظر في بناء القاعده من الاول مع اعاده هيكلة العلاقات مرة أخري حتي تصبح قاعده البيانات normalized
ربما يكون كلامي مؤلم لان القاعده ستعاد من الاساس لكن هذه هي الحقيقة فما بني علي خطأ لا يستطيع ان يستمر بهذا الخطأ
هذا والله أعلم ربما يكون حلول لهذه المشكلة


الحوت المضيء كتب:الهدف انو احيانا تكون في مشكلة عن التحديث او حذف بيانات اذا كانت هذه في علاقة بين حقلين بحيث تفيد هذه الحركة في ازلة العلاقةثم تستطيع تنفيذ التحديث او حذفثم اعادة العلاقة
هل عم تستعمل ال dataset? هل تتحدث عن PK?
نعم اتكلم عن dataset
لا هي Fk
تم تعديل هذه المشاركة بواسطة الحوت المضيء في 8 مايو 2013 في 17:12
الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة
محمد فؤاد تركي كتب:اذا كانت قاعده البيانات بهذا الشكل فأنها تفتقد الي الــ normalization و يفضل اعاده النظر في بناء القاعده من الاول مع اعاده هيكلة العلاقات مرة أخري حتي تصبح قاعده البيانات normalizedربما يكون كلامي مؤلم لان القاعده ستعاد من الاساس لكن هذه هي الحقيقة فما بني علي خطأ لا يستطيع ان يستمر بهذا الخطأهذا والله أعلم ربما يكون حلول لهذه المشكلة
انا حاليا يمكن استطيع ان اقول ان القاعدة البيانات الذي لدي هي سليمة
لكن احيانا نجد انفسنا ان نختار خيارات اخرى
الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة
الحوت المضيء كتب:انا حاليا يمكن استطيع ان اقول ان القاعدة البيانات الذي لدي هي سليمة
لكن احيانا نجد انفسنا ان نختار خيارات اخرى
ساجاوب حسب ما فهمت
لنفرض ان لديك جدول 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)اسف على تاخير في الرد اخي
في الحقيقة لم افهم جيد لكن سوف اعطيك مثال لكي تتضح اكثر
اريد منك قطع او ازلت العلاقة بفيجول
ثم اعادتها (العلاقة ) بفيجول
الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة
أخي الفاضل الحوت المضيء
السلام عليكم ورحمة الله وبركاتة
اذا كان الامر كذلك
فيمكنك تصميم اجراء مخزن لحذف العلاقة و إجراء آخر لاعاده بنائها مرة أخري
مثال لحذف العلاقة بين الجدولين
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


جاوب على سؤالي بشكل يستحق الثناء جزاك الله خير استاذي الفاضل محمد فؤاد على ماتفضلت به واسال الله العظيم ان يزيد قدرك وعلمك بارك الله فيك دائما
تم التجربة وتم نجاح التجربة 100% شكر لك دائما
الحياة لاتشترى بمال مهما كانت الحياة تحتاجة ... فسوف تغادر هذة الحياة وبعدها لاحد يترحم عليك فلا تجعل المال هو غاية بل اجعله وسيلة للنجاة
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…