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

FK

بدأه noor ahmad في 3 يوليو 2010 · 13 رد · 1,128 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في عندي 3 جداول مرتبطة

لمل بحاول اعمل اضافة للبيانات في الجدول اللي بحتوي على FK

بيعطيني خطأ

كيف ممكن احل المشكلة؟

#2

السلام عليكم

بالنسبة للجداول المرتبطة لنفرض انه لدينا جدولين

الجدول الأول:

Client=idclient,firstname,lastname

Commandes=NCommande,DateCommand,#idclient

نلاحظ ان الجدولان مرتبطان من خلال idclient حيت ان foreign key توجد ب Commandes و primarykey توجد ب client

فادا حاولت ان تضيف معلومات الى الجدول Commandes فيجب ان تضع بخانة idclient رقما يوجد بالأصل في الجدول الاول Client

وادا حاولت ان تضيف رقما غير موجود بالجدول Client فستظهر رسالة تفيد انه لايمكن لسبب وجود علاقة بين الجدولين

أتمنى ان يكون شرحي مناسبا

بالتوفيق

#3

السلام عليكم

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

لهذا السبب يعطيني خطأ

فانا لا اعرف قيمة PK حاليا في نفس وقت الإدخال

#4

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

set @id=(select max(id) from parent)

اما لو كنا لا نعرف التكرار او لاسبا تمنعنا من اختيار ال id كرقم بتسلسل اي ممكن يكون نص

يمكن استخدام احد الطرق

SELECT @@IDENTITY

SELECT SCOPE_IDENTITY()

SELECT IDENT_CURRENT('tablename')

بالتوفيق وجزاكم الله كل خير

تم تعديل هذه المشاركة بواسطة X-File في 3 يوليو 2010 في 15:04

1

In bad state

#5

السلام عليكم

يعطيني خطأ عند الكتابة بهذا الطريقة م

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

#6

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

عند ادخال القيم في الجدول الرئيسي قومي بإسترجاع قيمة ال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 واحدة لضمان دخول الاثنين سويا

1

اللهم ارزقنا فهم النبيين وحفظ المرسلين

Hock341@yahoo.com

الشركة التطبيقية لخدمات الحاسب الالي [حاسب]

http://www.hasib.com.sa

مدونتي

#7

السلام عليكم

بصراحة ما فهمت ممكن توضيح اكتر

انا عندي PK قيمة بتزيد انا ما بدخلها

#8

طيب وانا مادخلتها

انتي لو تلاحظي انا عملتها Select بعد ما دخلت

بس بدخلها في الجدول الفرعي الثاني في الحالة دي بيكون FK

اللهم ارزقنا فهم النبيين وحفظ المرسلين

Hock341@yahoo.com

الشركة التطبيقية لخدمات الحاسب الالي [حاسب]

http://www.hasib.com.sa

مدونتي

#9

طيب في الجدول الأول عملت اختيار

طيب ما في شي في الجدول التاني بدل انها قيمة ماخوذة من الجدول التاني.؟

اسفة غلبتك

#10

ولا يهمك اختي

انتي تنفذين البروسيدجر الاول من خلال الدوت نت سيرجع اليكي قيمه هذة القيمة هي قيمة الPK التي ستكون FK في الجدول الفرعي

ارجعي مرريها ثانية الي الجدول الفرعي من خلال الدوت نت ايضا

يعني مرحلتين من الحفظ

اللهم ارزقنا فهم النبيين وحفظ المرسلين

Hock341@yahoo.com

الشركة التطبيقية لخدمات الحاسب الالي [حاسب]

http://www.hasib.com.sa

مدونتي

#11
--@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
1

لله في الآفاق آيات لعـــل = أقلهـــا هو ما إليه هداكا

ولعل ما في النفس من آياته = عجبٌ عجابٌ لو ترى عيناكا

والكون مشحون بأسرار إذا = حاولت تفسيراً لهــا أعياكا

#12

السلام عليكم

شكرا اخ hock والأخ ماذا بعد؟

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

ممكن اذا في مجال انه الشرح يكون في مثال مطبق ب c#

#13

الملف المرفق عبارة عن مثال فقط لا غير

تب ربطه مع كريد فيو

كذلك الادخال مع اجراء

بالتوفيق

وجزاكم الله كل خير

WebSite3.rar

In bad state

#14

السلام عليكم

شكرا كتير اخ x-file

الله يجزيك الخير :)