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

رسالة خطأ تظهر عند ادراج قيم جديدة في جدولين مرتبطين

بدأه m00j في 11 ديسمبر 2012 · 6 رد · 774 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

A foreign key value cannot be inserted because a corresponding primary key value does not exist

جربت عملت Cascade بين الجدولين وكمان عملت Cascade في العلاقة الموجودة بين DataTable ,, ولكن لم انجح في حل المشكلة . هل يوجد حل او حيلة خصوصا انني احتاج لوجود الجدولين في نفس الفورم .

آمل بحق أن اجد جواب تام يحل لي المشكلة وشكرا.

تم تعديل هذه المشاركة بواسطة m00j في 11 ديسمبر 2012 في 06:36

#2

اخوي الرساله تقول انك ما تدخل تضيف بيانات داخل الجدول لانه Primary key مش موجود

يعني في عندك مشكله بادخال البيانات

ياريت اخوي تجيب لنا الكود عشان اعرف انت ايش دخلت والطريقه الي استخدمتها

#3

يا سيدي سأرفق لك المثال و آمل ان تتحملني :happy:

ErrorSave.rar

#4

المعذره اخوي الواجهه ما رضيت تفتح

دخلت واجهه الاكواد مالقيت اكواد

على العموم اخوي انت معك اثنين جداول customer و order

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

يعني لما تحب تضيف بيانات لجدول الطلبيات لازم يكون مسبقا في بيانات بجدول الزبون

نفترض انه عندك طلبيه رقم 1 ورقم العميل 2

لكن في جدول العملاء مافي عميل رقمه 2 فعشان كذه تطلعلك رساله الخطا

#5

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

#6
m00j كتب:

السلام عليكم

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

A foreign key value cannot be inserted because a corresponding primary key value does not exist

جربت عملت Cascade بين الجدولين وكمان عملت Cascade في العلاقة الموجودة بين DataTable ,, ولكن لم انجح في حل المشكلة . هل يوجد حل او حيلة خصوصا انني احتاج لوجود الجدولين في نفس الفورم .

آمل بحق أن اجد جواب تام يحل لي المشكلة وشكرا.

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

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

بمعنى

أنك تحاول إدخال عناصر فى الجدول OrderDetails وقيمة المفتاح الفرعى غير موجودة بالجدول الأساسى Orders كأن تحاول ربط هذا العنصر بالسجل الذى مفتاحه الأساسى يساوى 5 -على سبيل المثال- فى حين أن الرقم 5 غير موجود فى الجدول الأساسى

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

والآلية تتم كالآتى

الحالة الأولى: لو أنك تدخل البيانات يدوياً

تقوم بعمل حلقة تكرار على الجدول الأصلى

وفى كل مرة تستخرج كل السجلات المرتبطة به من الجدول الفرعى

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

بعدها تغير قيمة المفتاح الفرعى للسجلات التى قمت باستخراجها قريباً (الخاصة بالسجل الأساسى الذى أدخلته)

تقوم بعملية insert للسجلات الفرعية

الحالة الثانية: لو أنك تستخدم SQLDataAdapter

يجب عليك أيضاً تغيير القيم فى الجدول الفرعى لتتناسب مع الجدول الأساسى بعد الحفظ

وهذه العملية فى الحقيقة مرهقة ويحدث بها الكثير من الأخطاء وشخصياً لا أفضلها

نصيحة:

حاول عمل نافذة خاصة بالفواتير بحيث تحتوى على جدول التفاصيل فقط

أما البيانات الرئيسية تكون موجودة على النافذة على هيئة أدوات مثل TextBox, ComboBox وهكذا

فى هذه الحالة ستكون المهمة أسهل

3

أدعو الله أن يجعل أعمالنا خالصة لوجهه الكريم --- وأن ينفعنا بما علمنا

Dr Sayed Tohamy

Programming Instructor

مدرب برمجة

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

EmaSoft2000

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

#7
ema2000_t كتب:

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

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

بمعنى

أنك تحاول إدخال عناصر فى الجدول OrderDetails وقيمة المفتاح الفرعى غير موجودة بالجدول الأساسى Orders كأن تحاول ربط هذا العنصر بالسجل الذى مفتاحه الأساسى يساوى 5 -على سبيل المثال- فى حين أن الرقم 5 غير موجود فى الجدول الأساسى

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

والآلية تتم كالآتى

الحالة الأولى: لو أنك تدخل البيانات يدوياً

تقوم بعمل حلقة تكرار على الجدول الأصلى

وفى كل مرة تستخرج كل السجلات المرتبطة به من الجدول الفرعى

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

بعدها تغير قيمة المفتاح الفرعى للسجلات التى قمت باستخراجها قريباً (الخاصة بالسجل الأساسى الذى أدخلته)

تقوم بعملية insert للسجلات الفرعية

الحالة الثانية: لو أنك تستخدم SQLDataAdapter

يجب عليك أيضاً تغيير القيم فى الجدول الفرعى لتتناسب مع الجدول الأساسى بعد الحفظ

وهذه العملية فى الحقيقة مرهقة ويحدث بها الكثير من الأخطاء وشخصياً لا أفضلها

نصيحة:

حاول عمل نافذة خاصة بالفواتير بحيث تحتوى على جدول التفاصيل فقط

أما البيانات الرئيسية تكون موجودة على النافذة على هيئة أدوات مثل TextBox, ComboBox وهكذا

فى هذه الحالة ستكون المهمة أسهل

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

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

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

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

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

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