السلام عليكم
في عندي 3 جداول مرتبطة
لمل بحاول اعمل اضافة للبيانات في الجدول اللي بحتوي على FK
بيعطيني خطأ
كيف ممكن احل المشكلة؟
السلام عليكم
في عندي 3 جداول مرتبطة
لمل بحاول اعمل اضافة للبيانات في الجدول اللي بحتوي على FK
بيعطيني خطأ
كيف ممكن احل المشكلة؟
السلام عليكم
بالنسبة للجداول المرتبطة لنفرض انه لدينا جدولين
الجدول الأول:
Client=idclient,firstname,lastname
Commandes=NCommande,DateCommand,#idclient
نلاحظ ان الجدولان مرتبطان من خلال idclient حيت ان foreign key توجد ب Commandes و primarykey توجد ب client
فادا حاولت ان تضيف معلومات الى الجدول Commandes فيجب ان تضع بخانة idclient رقما يوجد بالأصل في الجدول الاول Client
وادا حاولت ان تضيف رقما غير موجود بالجدول Client فستظهر رسالة تفيد انه لايمكن لسبب وجود علاقة بين الجدولين
أتمنى ان يكون شرحي مناسبا
بالتوفيق
السلام عليكم
انا اقوم باضافة المعلومات في الجدولين المرتبطين بنفس الوقت
لهذا السبب يعطيني خطأ
فانا لا اعرف قيمة PK حاليا في نفس وقت الإدخال
بعد عملية الادخال بالجدول الاب نريد ان نعرف ماهو رقم المعرف امضاف اي يكون هو اخر رقم تمت اضافته لو كان مشكل من تسلسل يمكن اختياره عن طريق دالة ال max
set @id=(select max(id) from parent)
اما لو كنا لا نعرف التكرار او لاسبا تمنعنا من اختيار ال id كرقم بتسلسل اي ممكن يكون نص
يمكن استخدام احد الطرق
SELECT @@IDENTITY
SELECT SCOPE_IDENTITY()
SELECT IDENT_CURRENT('tablename')
بالتوفيق وجزاكم الله كل خير
تم تعديل هذه المشاركة بواسطة X-File في 3 يوليو 2010 في 15:04
In bad state
السلام عليكم
يعطيني خطأ عند الكتابة بهذا الطريقة م
ALTER PROCEDURE appadd ( @FlatID int, @appID int ) AS insert into Flatapp (FlatID,appID) values( select IDENT_CURRENT (Flat),@appID)
ما هي الطريقة الصحيحة للكتابة؟
تم تعديل هذه المشاركة بواسطة noor ahmad في 3 يوليو 2010 في 16:21
السلام عليكم ورحمة الله وبركاته
عند ادخال القيم في الجدول الرئيسي قومي بإسترجاع قيمة الPK وهذه عن طريق عدة طرق منها Output parmeter او جملة SELECT SCOPE_IDENTITY()
هذا مثال للجدول الرئيسي
Create Proc InsertMainTable @Value1 varchar(255) as Insert Into MainTable (Colum1) values(@Value1) SELECT SCOPE_IDENTITY()
ثم تأخذي القيمة التي جائت لكي من هذا البروسيدجر
وتضعيها في البروسدجر الثاني للجدول الفرعي
Create Proc InsertDetails @DetailsID int ,@MainID int as Insert Into Details(DetailsID,MainID)values(@DetailsID,@MainID)
يمكنك عمل كل العمليتين في Transaction واحدة لضمان دخول الاثنين سويا
اللهم ارزقنا فهم النبيين وحفظ المرسلين
الشركة التطبيقية لخدمات الحاسب الالي [حاسب]
السلام عليكم
بصراحة ما فهمت ممكن توضيح اكتر
انا عندي PK قيمة بتزيد انا ما بدخلها
طيب وانا مادخلتها
انتي لو تلاحظي انا عملتها Select بعد ما دخلت
بس بدخلها في الجدول الفرعي الثاني في الحالة دي بيكون FK
اللهم ارزقنا فهم النبيين وحفظ المرسلين
الشركة التطبيقية لخدمات الحاسب الالي [حاسب]
طيب في الجدول الأول عملت اختيار
طيب ما في شي في الجدول التاني بدل انها قيمة ماخوذة من الجدول التاني.؟
اسفة غلبتك
ولا يهمك اختي
انتي تنفذين البروسيدجر الاول من خلال الدوت نت سيرجع اليكي قيمه هذة القيمة هي قيمة الPK التي ستكون FK في الجدول الفرعي
ارجعي مرريها ثانية الي الجدول الفرعي من خلال الدوت نت ايضا
يعني مرحلتين من الحفظ
اللهم ارزقنا فهم النبيين وحفظ المرسلين
الشركة التطبيقية لخدمات الحاسب الالي [حاسب]
--@value1 تمثل القيمة المطلوب اضافتها فى الجدول الرئيسى / وليكن اسم العنصر --@value2 تمثل قيمة المتغير المطلوب اضافته فى الجدول الفرعى / وليكن اسم العنصر الفرعى -- table1 الجدول الرئيسى -- table2 الجدول الفرعى CREATE PROC usp_MyProc ( @value1 varchar(20), @value2 varchar(20) ) AS INSERT INTO table1(a_name) VALUES(@value1) IF SCOPE_IDENTITY IS NOT NULL BEGIN INSERT INTO table2(table1_id , b_name) VALUES(SCOPE_IDENITY, @value2) END
لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا
ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا
والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا
السلام عليكم
شكرا اخ hock والأخ ماذا بعد؟
استخدمت هاي الطرق ولكن لسا بيعطيني خطأ
ممكن اذا في مجال انه الشرح يكون في مثال مطبق ب c#
الملف المرفق عبارة عن مثال فقط لا غير
تب ربطه مع كريد فيو
كذلك الادخال مع اجراء
بالتوفيق
وجزاكم الله كل خير
In bad state
السلام عليكم
شكرا كتير اخ x-file
الله يجزيك الخير :)