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

هل من خاصية تعيد لى إسم الحقل المتسبب فى الخطأ -- عند حدوث أخطاء فى الأدخال

بدأه vbm في 25 يوليو 2008 · 17 رد · 1,958 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

-----------------------

بفرض أنى أستخدم قاعدة بيانات على sqlserver 2005

وهناك جدول بها يسمى س

بة حقل رقم تليفون الشخص مهم جدا ولا يقبل بتكرارة

فى هذة الحالة سيكون الحل عمل

index

من النوع

unique

لحقل التليفون بحيث لا تسمح قاعدة البيانات بوضع رقم تليفون مكرر

--------------

وفى كود الأدخال للبيانات

سنقوم بعمل Catch

من النوع

SqlClient.SqlException

وعند حدوث الخطأ نعيد رسالة الخطأ بالكود

MsgBox(exsql.Message)

مثلا

--------------------------------

ستظهر رسالة مشابهة ل

---------------------------

Message

---------------------------

Violation of UNIQUE KEY constraint 'IXdsl_c'. Cannot insert duplicate key in object 'dbo.c'.

The statement has been terminated.

=============================

حيث 'IXdsl_c'

هو index حقل التليفون مثلا

-------------------------------------

والسؤال هل من طريقة أو خاصية لمعرفة الحقول أو index

التى تسببت فى الخطأ

مثلا يعيد لى هنا بالنسبة لهذا المثال

القيمة

IXdsl_c

أو يعيد لى مجموعة الحقول التى حدثت عندها الأخطاء

علما بإن طريقة الأضافة للبيانات هى ExecuteNonQuery()

-----------------------------------------------

وشكرا للجميع

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

#2

up!!!!

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

#3

up !!!

-----------------------

لو كان السؤال غير مفهوم يمكن أن يرد أحدكم لأوضح أكثر وشكرا

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

#4

السلام عليكم

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

abdullahf4.jpg
#5
c++2003 كتب:
السلام عليكم

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

أولا شكرا لردك أخى العزيز

-----------------

على فرض أن بقاعدة البيانات كلا من رقم التليفون والرقم القومى ورقم الفيزا مثلا فريد لا يتكرر

---

عند حدوث خطأ التكرار سيعيد البرنامج مجموعة الأخطاء

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

-------------------

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

#6
vbm كتب:
على فرض أن بقاعدة البيانات كلا من رقم التليفون والرقم القومى ورقم الفيزا مثلا فريد لا يتكرر

ما في مشكله اذا كان اكثر من عامود لايتكرر

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

abdullahf4.jpg
#7

أخى العزيز لو قاعدة البيانات لشركة مثلا وبها حوالى 10000 حقل فى جدول واحد

وقلت لمدخل البيانات إفحص سيصرخ فى وجهك

--------------------------------------

أما لو كنت تقصد فحص بالكود فهو فعلا ما أفعلة ولكنى كنت أريد معرفة مجموعة الحقول التى وقع عندها الخطأ

------------------------------------

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

#8

up !!!

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

#9

بإمكانك يا صديقي وضع اسم مفهوم للقيد Check و من ثم في البرنامج تقوم بإظهار الجزء من الإسم الذي يشير إلى اسم الحقل أو الفهرس.

في مثالك تضع

Add constraint CHK_PHONE_UNIQUE

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

#10
ع السوادي كتب:
بإمكانك يا صديقي وضع اسم مفهوم للقيد Check و من ثم في البرنامج تقوم بإظهار الجزء من الإسم الذي يشير إلى اسم الحقل أو الفهرس.

في مثالك تضع

Add constraint CHK_PHONE_UNIQUE

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

أخى العزيز شكرا لردك ولكن ما قلتة هو ما أفعلة بالضبط ولكنى كنت أريد طريقة أخرى كما وضحتها بأعلى

اقتباس
والسؤال هل من طريقة أو خاصية لمعرفة الحقول أو index

التى تسببت فى الخطأ

مثلا يعيد لى هنا بالنسبة لهذا المثال

القيمة

IXdsl_c

أو يعيد لى مجموعة الحقول التى حدثت عندها الأخطاء

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

#11

للرفع

-------------

بفرض أنه لدينا رقم التليفون ورقم البطاقة ورقم الفيزا مثلا

وفى نموذج الأدخال يتم إدخال القيم السابقة للعميل مثلا

وكلا من القيم الثلاثة فريدة لا يمكن تكرارها

وبفرض أن المدخل أدخل قيمة فيزا ورقم بطاقة مكررين

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

وما أريدة هل يمكن مثلا أن يعيد أسماء الحقول التى حدث عندها الخطا فقط

----------------

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

#12

ممكن تستخدم اى شروط انت عايزها سواء Regualr Exprission

او تستخدم عمليه الـ Valdition مع الـ Try and Catch block وفى الـ catch مثلا بيرجعلك رساله باسم الحقل اللى فيه الخطأ على حسب نوع البيانات اللى انت حاطط عليها validation فى التيكست بوكس

لو مثال هاته وانا اشوفه معلش يا محمد انا رديت بسرعة ووالله ما عنديش نت فى البيت

ولدي إليك وصيتي عهد الأسودْ

العز غايتنا نعيش لكي نسود

و عريننا في الأرض معروف الحدود

فاحم العرين و صنه عن عبث القرود

أظفارنا للمجد قد خُلقت فدى

و نيوبنا سُنَّت بأجساد العدى

و زئيرنا في الأرض مرهوب الصدى

نعلي على جثث الأعادي السؤددا

#13

استخدم الSelect :lol: في ال catch

Select ID,  PhoneNumber, VisaCardNumber From where PhoneNumber = YourPhoneValue OR Visa = YourValeu;

تم تعديل هذه المشاركة بواسطة slayer666 في 14 سبتمبر 2008 في 21:18

#14
Rashadov كتب:
ممكن تستخدم اى شروط انت عايزها سواء Regualr Exprission

او تستخدم عمليه الـ Valdition مع الـ Try and Catch block وفى الـ catch مثلا بيرجعلك رساله باسم الحقل اللى فيه الخطأ على حسب نوع البيانات اللى انت حاطط عليها validation فى التيكست بوكس

لو مثال هاته وانا اشوفه معلش يا محمد انا رديت بسرعة ووالله ما عنديش نت فى البيت

شكرا أخى رشاد على سرعة الرد

وبالفعل هذة هى الطريقة التى أستخدمها

وسوف أحاول أن أوضح بمثال قريبا بإذن الله

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

مثلا بإن تكون هناك Collection بأسماء الحقول التى حدث عندها الخطأ

فبدلا من الرسالة

اقتباس
---------------------------

Message

---------------------------

Violation of UNIQUE KEY constraint 'IXdsl_c'. Cannot insert duplicate key in Object 'dbo.c'.

The statement has been terminated

تملا Collection الخاصة بالأخطاء بأسماء الحقول التى حدث عنها الخطأ

فتكون مثلا

  1. ixdsl_c
  2. phone
  3. visa_num
  4. ID

أرجو أن تكون الفكرة واضحة

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

#15

طالما المشروع ويب يا اخى محمد ممكن تستخدم الـ Validation بالـ Java script

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

ولدي إليك وصيتي عهد الأسودْ

العز غايتنا نعيش لكي نسود

و عريننا في الأرض معروف الحدود

فاحم العرين و صنه عن عبث القرود

أظفارنا للمجد قد خُلقت فدى

و نيوبنا سُنَّت بأجساد العدى

و زئيرنا في الأرض مرهوب الصدى

نعلي على جثث الأعادي السؤددا

#16

لا يا عم رشاد مش ويب ولكن windows Application

تم تعديل هذه المشاركة بواسطة vbm في 14 سبتمبر 2008 في 23:43

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

#17

Ops So sorry ya Boss

تم تعديل هذه المشاركة بواسطة Rashadov في 15 سبتمبر 2008 في 00:08

ولدي إليك وصيتي عهد الأسودْ

العز غايتنا نعيش لكي نسود

و عريننا في الأرض معروف الحدود

فاحم العرين و صنه عن عبث القرود

أظفارنا للمجد قد خُلقت فدى

و نيوبنا سُنَّت بأجساد العدى

و زئيرنا في الأرض مرهوب الصدى

نعلي على جثث الأعادي السؤددا

#18

ان لم تكن تريد استخدام الSelect كما ذكرت سابقا هناك طريقة اخرى و هي استخدام ال RowUpdating الخاص بال DataAdapter

مثال بسيط

				SqlDataAdapter da = new SqlDataAdapter();
				da.RowUpdating += SqlRowUpdattingEventHandler(da_RowUpdatting);

		private void da_RowUpdatting(object sender, SqlRowUpdatedEventArgs e)
		{
			DataRow row = e.Row;
			int RowID = row["ID", DataRowVersion.Original];


			//هنا لتخطي الRow
			e.Status = UpdateStatus.SkipCurrentRow;
		}

تم تعديل هذه المشاركة بواسطة slayer666 في 18 سبتمبر 2008 في 07:23

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

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

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

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

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