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

[تنبيه - عنوان غير مناسب : ]والله تعبت من كثرة السؤال عن كيفية عدم تكرار بيانات في حقل مفتاح

بدأه okail في 14 مايو 2009 · 13 رد · 1,414 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عند تصميم فورم لإدخال بيانات داخل جدول في قاعدة بيانات sql server 2000

عندى حقل pno مفتاح اساسي

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

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

علماً بأني استخدم أداة Ado في الربط

هل استخدم دالة lookup ام ماذا ؟ وكيف ؟

#2

لماذا لاتجعل المفتاح الاساسي idx اي ترقيم تلقائي

او استخدم locate

if tabel1.locate('no_dr',dbgrid,[]);
begin
showmessage('هذا الرقم مكرر );
end;
#3

شكراً أخي طلال على مرورك

بالنسبة لرقم الموظف من الممكن أن يكون ترقيم تلقائي مع امكانية التعديل ولكن ادخال رقم موجود يقف البرنامج ولا أستطيع فعل أي شيء فأضطر الى غلق الدلفي

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

واستخدمت هذه الدالة ولكن نفس المشكلة ارجو ان تطلع على هذا الكود وتصححه لي

وأشكرك على مساعدتك وسعة صدرك

مرفق صورة للفورم والكود التالي هو عند حدث الخروج من DBEdit1 أي رمز الحساب

procedure Taccounts.DBEdit1Exit(Sender: TObject);


 var accountcodeck	 :variant;
begin

 if accounts.nostatus.Text ='1' then

  begin
	accountcodeck :=DM.ADOTaccount.Lookup('AccountCode',(DBEdit1.Text),'AccountCode;ParentAccount');
	if Not VarIsnull(accountcodeck[0]) then
		 begin
		ShowMessage('الحساب موجود');
		DM.ADOTaccount.cancel;
		 end
	else
		begin
		  if Not VarIsnull(accountcodeck[1]) then
			begin
			DBEdit2.SetFocus;
			accounts.DBEdit9.Text := DBEdit1.Text + '  '+ DBEdit2.Text;
			end
		  else
			begin
			ShowMessage('حساب الأب غير موجود قم بإنشاء الحساب الأب الرئيسي أولاً');
			DM.ADOTaccount.Cancel;
			end;
		end;
	end
 else
   begin
......

post-9554-1242322092_thumb.jpg

تم تعديل هذه المشاركة بواسطة okail في 14 مايو 2009 في 20:29

#4

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

و بما انك تستعمل الadoconnection هنا لابد من وضع الية لتفادي الخطا

و لابد لك ان تكون على علم بالsqlException او ال adoException

استعمل اخي try و except

انظر هذا المثال

Var i,j :integer;z:real;

Begin

Try

i:= strtoint(edit1.text);

j:= strtoint(edit2.text);

z:= i/j;

edit3.Text := floattostr(z);

Except

On Econverterror Do Showmessage ( ‘ ;( ’أدخل عدد صحيح من فضلك

On EZeroDivide Do shOwmessage(' ; ( 'لا يمكن القسمة على صفر

end;

و هذه اعتراضات خاصة بالدلفي و هناك اعتراضات خاصة بال adoconnection

و هذا ما فهمته من سؤالك

#5

شكراً أخي moh4algeriaprog

سوف اقوم بالحث عن بالsqlException وadoException علي أجد الحل

#6

الأخ الكريم/الأخت الكريمة

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

مرحباً بكم في منتدى الفريق العربي للبرمجة

نود تنبيهك أن العنوان غير مناسب.

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

Comming Soon

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

و بما انك تستعمل الadoconnection هنا لابد من وضع الية لتفادي الخطا

و لابد لك ان تكون على علم بالsqlException او ال adoException

الحقيقة اني بحثت كثيراً عن هذه الأوامر ولم أجدها

ارجو ان كان لديك مثال او رابط لها

#8

begin

try

اوامر الاضافة

except

الاوامر المطلوبة في حالة وقوع الخطا مثلا رسالة انو الموظف موجود

end;

#9

شكراً أخي ولكن جربت ومازالت نفس المشكلة

#10

انظر هذا المثال

Test.rar

#11

شكراً أخي moh4algeriaprog

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

post-9554-1242492256_thumb.jpg

#12

اخي هاذا ما حصل معي في بداياتي لتعلم لغة الدلفي و لكن اقول لك ان الخطا لا يزول لما تكون تعمل run من الدلفي نفسه لكن لو تذهب الى مسار البرنامج و تقوم بتنفيذ الملف ذو الامتداد exe فسترى ان المشكل ينتهي و جرب اخي و انا هنا للمساعدة بالشيء الذي استطيع عليه

#13

أشكرك أخي moh4algeriaprog على صبرك علي

سوف أقوم بتجربة الملف التنفيذي نفسه كما قلت

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

سوف أطبق على الشجرة حقتي وأري النتيجة

أشكرا أخي moh4algeriaprog وانت دائماً عند حسن الظن

#14

لا شكر على واجب

هذا ما تعلمناه من موقعنا الفريق العربي للبرمجة فهو فريق بجد قوي

و ان شاء الله مزيد من التطور و التفوق للفريق

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

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

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

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

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