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

التعامل مع قواعد البيانات في ديلفي

مغلق
بدأه ياسر2005 في 16 أبريل 2005 · 1 رد · 591 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

over.rarواجهتي مشكلة ... قمت باعداد جدول لحفظ بيانات ادارات المصنع

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

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

table.lookup في dbedit1.onexit و قد ظهرت الرسالة تفيد بانةهناك خطا في الاندكس و لم يتم عرض السجل حتي يتم تعديل محتوياتة او حتي للعرض فقط

ارجو من لدية حل لمشكلتي ان يقوم بعرضا علي و لة جزيل الشكر

و مرفق الملف للعرض علي ادارة المنتدي و القراء الاعزاء للاطلاع و الافادة و مبرمج بدلفي 7

#2

اخي الكريم

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

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

// Suppose  PrimeField is a record that can not be duplicated.
Var
	IQuery:TADOQuery;
	ICommand:TADOCommand;
Begin
	Try
  IQuery:=TADOQuery.Create(nil);
  Icommand:=TADOCommand.Create(Nil);
  IQuery.Connection:=ADOConnection1;
  IQuery.Sql.Text:= ‘SELECT * FROM MyTable Where PrimeField=’+Edit1.Text;
  Iquery.Open;
  IF iQuery.RecordCount>0 Then
 	 ShowMessage(‘Record With PrimeField Already Exist..’)
  Else
        Begin
 	 Try
	ICommand.Connection:=ADOConnection1;
    Icommand.CommandText:=’INSERT INTO MyTable (Field1,Field2,..)
      VALUES  (Value1,Value2,…)’;
    Icommand.Execute;

 	 Except on E1:Exception Do
    Begin
   	 Icommand1.Cancel;
   	 ShowMessage(E1.Message);
   	 
         End;
 	 End;//Except
 	 
Except On E2:Exception Do
	Begin
  Iquery.Cancel;
  ShowMessage(E2.Message);
  
	End;
End;// For Except


  Icommand.Free;
Iquery.Free;
End;// End For Function/Procedure

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

هذا الموضوع مغلق.

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