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

استفسار عن كيفية اضافة سجل والحصول على رقم السجل C#

بدأه domo3-mjro7 في 9 يوليو 2013 · 7 رد · 1,323 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي قاعدة بيانات الترقيم في السجلات تلقائي وفي كل مره اضيف سجل احتاج لاخذ رقم السجل ID واضافته لجدول اخر

فكرت اعمل استعلام بنفس الحقول الي اضيفت لكن من الممكن ان يتكرر نفس الحقول الشي الوحيد الذي لا يتكرر  هو رقم السجل

فما افضل طريقه للضافة سجل وبنفس الوقت الحصول على رقم السجل ؟؟

#2

ألسلام عليكم اخي الكريم عليك استخدام ال  SCOPE_IDENTITY()

حيث سوف يعطيك اخر حقل رقم ترقيم تلقائي تمت اضافتة للجدول

 

لكن للفائدة في حال كان لديك 2 insert

فعليك استخدام ال transaction

حتى تظمن ان تكون الجداول متزامنة من حيث الحقول

 

اليك هذا المثال

 

 

insert into TBL_name(FLD_namer)values('Test1')
Print SCOPE_IDENTITY()
 

 

من الممكن ان تقوم بدمج هذا ال Funcation  SCOPE_IDENTITY في جملة ال Insert  الثانية

1vAO2-d3nY_335990295.gif

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

154047116.gif
#3

في توقيعي اضافه في جدولين

#4

السلام عليكم اخي الكريم بالأضافة الى اجابتي السابقة يفظل استخدام

IDENT_CURRENT

 

كما في المثال التالية

 

 

SELECT IDENT_CURRENT('table Name')

 

 

استخدمها بدلاً من ال   SCOPE_IDENTITY

 

وذالك لانها  تجلب لك اخر الترقيم المدخل الى الجدول في نفس ال Seesion الذي يحصل في نتاثير خاصية الترقيم التلقائي

1vAO2-d3nY_335990295.gif

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

154047116.gif
#5

شكرا اخي  KARIMSOFT

ايضا شكرا لك اخي عمر المستشار ولكن عندي سوال في استخدام IDENT_CURRENT انا استخدم C# لتعامل مع الداتا بيس وقمت بانشاء داله تنفذ بعد اضافة السجل للجدول الاول ولكن مخرجات الدالة لا شي

 private string searchID(string tablename)
        {
            string id="";
            cmd.CommandText = "select IDENT_CURRENT( ' " + tablename + "' )";
            DataTable tb = executeReaders();
            if (tb.Rows.Count > 0)
                id =tb.Rows[0][0].ToString();

            return id;
        }
#6

بما أن الدالة IDENT_CURRENT  ترجع نتيجة واحدة فلا حاجة لإستعمال cmd.executeReaders(); 

 

الكود الصحيح :

private string searchID(string tablename)
        {
            string id="";
            cmd.CommandText = "select IDENT_CURRENT( ' " + tablename + "' )";
            id = cmd.ExecuteScalar().ToString();
            
            return id;
        }

أيضا تأكد أن الإتصال مفتوح قبل عمل الإستعلام 

#7

هذه الطريقة ستسبب لكي المشاكل في المستقبل مع كثرة المستخدمين لان يمكن ان مستحدين يعملو في وقت واحد ولاول سياخذ كود الثاني فكر في هذه المشكلة

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 22 يوليو 2013 في 01:02

1
#8

billalDev ايضا لا يوجد مخرجات لا يزال نفس المشكاه

اخي KARIMSOFT اشكرك على تعليقك وكلامك صحيح لما يكون البرنامج عليه اكثر من مستخدم لكن برنامج سوفا يعمل عليه شخص واحد فقط ايضا الطريقه التي شرحتها في رابطك جدا جميله لكن ليس لدي الخبره الكافيه في  Mysql واكوادها

فمن وجهت نظري ان العمل مع البحث كما في الكود اسهل لي

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

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

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

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

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