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

سوال في صفحة ويب

بدأه صوت المطر في 8 يوليو 2011 · 8 رد · 677 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

لدي مشروع في ASP.net باستخدام #C وSQL2005

لدي سوال وهو عبارة عن صفحة ويب يقوم المشترك بملاء استمارة بيانات وتنتقل هذة البيالنات الى الداتا بيس والصفحة التانية تقوم بعرض البيانات التي ادخلت من قبل المستخدم ((تمام كما في التسجيل في ياهو حيث في نهاية التسجيل تاتي صفحة تحتوي على كامل البيانات التي ادخلتها ))......مع العلم انه يوجد عدد تزايدي تلقائي في الداتا بيس .... قمت بالبحث فوجدت ضالتي لكني لم اتمكن من معرفة ما هو الشرط او ماهي[جملة (where) التي ستعرض هذه البيانات.....فكرت بان اعمل شرط وهو عن طريق عد الصفوف في الداتا بيس ويكون الماكس Max لكن ليس لدي الخبرة الكافية في ذلك ........افيدوني ولكم جزيل الشكر

ارجوا ان يكون سوالي مفهوم

#2

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

اختي يمكنك استخدام الاستعلام التالي


Select Top(1) * From YourTable Order By PK_Column desc

حيث ان PK_Column هو المفتاح الاساسي للجدول

.:: Wish to become better and better ::.

#3

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

اختي حبيت اذكر لك تطبيق فكرتك السابقة, جربي الاستعلام التالي

Select Top(1) * From YourTable Where PK_Column = (Select Max(PK_Column) From Your Table)

كما يمكننا ايضا ايجاد المطلوب بالاستعلام التالي

Select * From YourTable Where PK_Column=@@IDENTITY

.:: Wish to become better and better ::.

#4

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

تخيل أن اثنين من الاعضاء قامو بالتسجيل بنفس الوقت فقد تسبق معلومة العضو الثاني معلومة العضو الاول فيحصل العضو الاول على معلومات العضو الثاني........

1

وقال تعالى(( وَلَن تَرْضَى عَنكَ الْيَهُودُ وَلاَ النَّصَارَى حَتَّى تَتَّبِعَ مِلَّتَهُمْ قُلْ إِنَّ هُدَى اللّهِ هُوَ الْهُدَى وَلَئِنِ اتَّبَعْتَ أَهْوَاءهُم بَعْدَ الَّذِي جَاءكَ مِنَ الْعِلْمِ مَا لَكَ مِنَ اللّهِ مِن وَلِيٍّ وَلاَ نَصِيرٍ ))......

للمزيد من المشاريع الجاهزة ودورات برمجة المواقع اضغط هنا

#5

شكرا اخواني ع الرد المفيد استفد كتيرا

#6

صحيح يمكن استخدام Session ولكني اريد عرض للمستخدم المسجل رقم تسلسلة مع بقية البيانات من الداتا بيس فهل يمكنني استخدامه مع session

#7

اكيد يمكنك اخي بما انك نقلت اسم المستخدم أو اي معلومة تبع المستخدم تستطيع إحضار اي بيانات تخصة في الجدول الى الصفحة التالية....ومنها رقمة التسلسلي أو اي شيء

وقال تعالى(( وَلَن تَرْضَى عَنكَ الْيَهُودُ وَلاَ النَّصَارَى حَتَّى تَتَّبِعَ مِلَّتَهُمْ قُلْ إِنَّ هُدَى اللّهِ هُوَ الْهُدَى وَلَئِنِ اتَّبَعْتَ أَهْوَاءهُم بَعْدَ الَّذِي جَاءكَ مِنَ الْعِلْمِ مَا لَكَ مِنَ اللّهِ مِن وَلِيٍّ وَلاَ نَصِيرٍ ))......

للمزيد من المشاريع الجاهزة ودورات برمجة المواقع اضغط هنا

#8

المشكلة أنه بالطرق السابقة لا يمكنك أن تضمن أن هذا الرقم هو فعلاً لتعليمة الـ insert التي أجريتها

لاحتمال أن يقوم أحدهم بعمل insert بعدها مباشرةً

الحل الأسهل هو استرجاع الرقم التسلسلي فوراً بعد insert مباشرة ضمن نفس الـ trip

على فرض الجدول table1 فيه الحقول التالية

id , name , email

فيكون الـ stored procedure على الشكل التالي :

CREATE PROCEDURE dbo.insert_item
	(
	@name nvarchar(50) ,
	@email nvarchar(50) ,
	@id int output
	)
AS
	INSERT INTO table1 (name,email) VALUES (@name,@email);
	set @id=@@identity
	RETURN

المتحول @id يحمل الرقم المعرف للسطر المضاف في db

وفي الكود تسترجع الرقم المعرف @id وتضعه في متحول session على الشكل التالي

 protected void add_item()
    {
            string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
            SqlConnection con = new SqlConnection(connectionString);
            SqlCommand cmd = new SqlCommand("dbo.insert_item", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@name", SqlDbType.NVarChar,50));
            cmd.Parameters["@name"].Value = name.Text.Trim();
            cmd.Parameters.Add(new SqlParameter("@email", SqlDbType.NVarChar, 50));
            cmd.Parameters["@email"].Value =email.Text.Trim();
            cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.Int, 4));
            cmd.Parameters["@id"].Direction = ParameterDirection.Output;
            try
            {
                con.Open();
                cmd.ExecuteNonQuery();
                Session["id"] = (int)cmd.Parameters["@id"].Value; 
            }
            catch (Exception err)
            {

            }
            finally
            {
                con.Close();
            }
    }

بصفحة عرض البيانات بتكتب استعلام بسيط هو

select * from table1 where id="+session["id"]+"

صدقني هاد الأسلوب هو الأضمن

تم تعديل هذه المشاركة بواسطة khuloud في 11 يوليو 2011 في 14:55

#9

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

اختي لقد تم ذكر موضوع ال @@Identity سابقا؟!!

.:: Wish to become better and better ::.

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