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

مشكلة بال Insert في جدولين The INSERT statement conflicted

بدأه ميقات في 17 مارس 2012 · 9 رد · 1,446 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي جدولين

الاول

request-header

- request-no ( PK varchar8)

- date

- done-by

الثاني

request_details

- (FK varchar8( request_no

- request-item

- unite

وعندي ادخال البيانات في الصفحه صاير بطريقة منفصلة اول يدخل بيانات الجدول الاول اذا ضغط الزر كالتالي:

sqldatasours1.insert()

ثم بيانات الجدول الثاني:

sqldatasource2.insert()

request - no في كلا العمليتين راح ياخذه من ليبيل واحد يكون مثلا رقم الطلب 20120012

المشكلة عندي اذا عملت insert

يظهر لي هالمسج بجانب عملية insert الثانية الخاصة بالجدول الثاني:


The INSERT statement conflicted with the FOREIGN KEY constraint "FK_request_details_request_header". The conflict occurred in database "D:\test\APP_DATA\ASPNETDB.MDF", table "dbo.request_header", column 'request_no'. The statement has been terminated.

ملاحظة: ذهبت للجداول وتأكد منهم شفت انه حفظ بيانات الجدول الاول فقط..

شنو المشكلة الضبط؟؟

تم تعديل هذه المشاركة بواسطة ميقات في 17 مارس 2012 في 21:35

#2

السلام عليكم ..

  1. المشكلة في الــ Foreign Key .. كيف تخبر الــSqlDataSource2 ان الــ request_no هو كذا ...
  2. حاول استخدام الحث Inserting للمصدر الثاني .. لتمرير البارمتر ..
    protected void SqlDataSource2_Inserting(object sender, SqlDataSourceCommandEventArgs e)
        	{
    
         		e.Command.Parameters["request_no"].Value = label1.Text;
        	}

    بشرط أن يكون معرف البارمتر ..

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 17 مارس 2012 في 23:38

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

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

اخي الكريم

الرسالة دي معناها انك بتضيف سجل في الجدول الثاني request_details والذي يحتوي علي حقل request_no ولا يتم ادخاله في السجل عند الاضافة لذلك اتبع طريقة الاخ حسام من اجل التعديل او يمكنك الاضافة يدويا باستخدم الكود وليس ياستخدام sqldatasource

والله الموفق والمستعان

#4

مشكورين على ردوكم انحلت المشكلة،،

لكن عندي مشكلة ثانية بعد لها علاقة بالانسرت وهي

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

الكود اللي عملته كالتالي


INSERT INTO suppliers(request_no, category_id)
SELECT DISTINCT request_details.request_no, category.category_id
FROM category INNER JOIN request_details ON category.category_id = request_details.category_id AND category.brand = request_details.brand
WHERE (request_details.request_no = @request)

@request ياخذ قيمته من ليبل

اذا عملت test للـ Quary تشتغل عندي وتنقل البيانات للجدول المطلوب لكن اذا وضعطتها في زر

sqldatasours3.insert()

ما تشتغل ولا يحدث اي تأثير في البرنامج

فشنو ممكن المشكلة ؟؟؟

تم تعديل هذه المشاركة بواسطة ميقات في 18 مارس 2012 في 13:54

#5

السلام عليكم ..

  1. أنت تريد تنفيذ استعلام .. يقوم بمهمة ما ...خذ Button و اكتب داخله الكود ... بعد القيام بالتعديلات التي تناسبك :
    SqlConnection connection =  new SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True");
    SqlCommand command = new SqlCommand();
    command.Connection = connection;
    command.CommandType = CommandType.Text;
    command.CommandText = "UPDATE  Customer SET CustomerName =@CustomerName WHERE ID=@ID;";
    command.Parameters.AddWithValue("@CustomerName", "ahmed");
    command.Parameters.AddWithValue("@ID", 1);
    command.ExecuteNonQuery();

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#6

ولا مرة استخدمت الطريقة اللي وضعتها اخي حسام ...>>> مبتدئه :blush:

اذا ممكن تشرحها لي بالضبط وين كذلك يكون الكود

ويكون المثال على طريقة انرست من جدول الي جدول آخر بحسب شرط معين..

انا اللغة اللي استخدمها VB

لك جزيل الشكر مقدماً..

تم تعديل هذه المشاركة بواسطة ميقات في 18 مارس 2012 في 20:31

#7

السلام عليكم ..

  1. نسحب زر Button و نضغط ضغتين متتاليتين حتى يفتح محرر الكود في الحدث Click و نكتب الكود ..
  2. في المواضيع المثبتة في منتدى الــADO.NET.. الكثير من الشروحات .. عليك بها ..
1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#8

ان شاء الله اخي حسام راح اشوف المواضيع،،

عندي سؤال اضافي بعد بعض الاحيان عند ربطي gridviw مع datasoure وفي الداتا سورس كنت انا محدده في advance انه يسمح لي بعمل insert, edite, delet.....

لكن عند فتح الخيارات في grid view اجد enable paging, enable editing, enable delete,... ولكن خيار enable insert غير موجود فما سبب ذلك؟؟

خاصه انه احتاج هالخاصية بسبب وجود عدة صفوف اريد اعرضها في gridview من داتا سورس ..

مثلا اعرض له مواصفات السلع والشخص يدخل سعرها..

فهل يوجد حل لهذه المشكلة؟؟ بحيث اظهر خيار insert كزر في كل row اذا ما كان ظاهر لي من ضمن الخيارات اللي ذكرتها اعلاه..

#9

السلام عليكم ..

  1. يمكن إضافة زر لكل سطر و برمجة ما نريد به ..
  2. يمكن إضافة زر جديد لكل الــ GridView لكن الموضوع يحتاج اكواد إضافية رابط
  3. المكون DetailsView فيه الخاصية AutoGenerateInsertButton ...
1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#10

مشكور اخوي حسام

استخدمت details view بدل gridview بما انه يوفر هالخاصية..

وكذلك عملت جداول وربط التكيست بوكس مباشرة بالداتا سورس..

عندي اسئلة ثانية بخصوص الانسرت راح اطرحها ان شاء من اوصل للصفحات الخاصة بذلك.. اذا لا يوجد اي مانع

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