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

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

مغلق
بدأه Wael Dalloul في 12 يونيو 2005 · 3 رد · 660 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الرجاء المساعدة: ساوضح الفكرة التي اريد الوصول اليها بمثال

مثلاً اذا كان لدي قاعدة بيانات مؤلفة من جدولين الاول هو جدول الطلاب و الثاني هوكتب الطالب مرتبط مع جدول

الطالب بعلاقة اب(طالب) ابناء(الكتب) الآن في البرنامج

عند ظهور نافذة ادخال بطاقة طالب مثلا تحتوي هذه النافذة على DBEdits لادخال معلومات الطالب وعلى DBGraid

اعرض فيه كتب الطالب المتعددة

و هناك زر لاضافة كتاب الى الطالب

ولكن لا يمكن اضافة كتاب للطالب دون تثبيت الطالب اولاً

حيث عند عرض واجهة ادخال طالب جديد اقوم بعمل Insert على جدول الطالب فكيف يمكن اضافة كتب له؟ قبل عمل Post

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

1- اذا اختار المستخدم الزر الغاء الامر بعد تثبيت الطالب سيبقى الطالب في الجدول

2- منظر زر تثبيت غير لائق مع وجود الزر موافق والغاء الامر

واليكم صورة توضيحية في المرفق

الرجاء الرد بسرعة وشكرا

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#2

مافهمته هو الاتي:

1- احد قوانين الهيئة التي تكتب لها البرنامج هو ان لكل طالب كتاب واحد او اكثر بينما كل كتاب سيكون لطالب واحد وواحد فقط. اذا العلاقة هي اب الي ابناء.

2- من القوانين ايضا انه لا يمكن ان يوجد طالب في الهيئه الا اذا اعطيى له متاب واحد على الاقل. وهذا فيما معناه انه لا يمكن اضافة الطالب الا و معه الكتاب والا سوف تخالف قوانين الهيئة.

لماذا ذكرت اعلاه بسبب ان بناء العلاقات يجب ان يمثل تماما قوانين الهيئة التي تكتب لها البرنامج و الا فأن البرنامج في اغلب الضن سيرفض.

اذا كان فهمي صحيح لما ذكرت فهنا حل اذا كنت تستخدم ADO وهو عن طريق عمل Transaction

فأذا اخل الكتاب فأنك تستطيع عمل Commit ليتم تسجيل كلا السجلين في الجدولين (جدول الطالب و جدول الكتب).

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

تحياتي

تم تعديل هذه المشاركة بواسطة Whale في 12 يونيو 2005 في 10:53

#3

هل ممكن ان توضح اكثر ما هي Transaction وكيفية استخدامها مع Ado لانني اظن ان هذا ما ابحث عنه

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#4

ليست دلفي محملة على جهازي الان و لكن يمكنك زيارة الموقع التالي

http://delphi.about.com/od/database/l/aa010202a.htm

وهذا كود نسخته من الموقع

var Level: integer;
begin
  Level:=ADOConnection1.BeginTrans;
  try
    //do some database
    //updating, deleting or inserting
    ADOConnection1.CommitTrans;
  except
    on E:Exception do ADOConnection1.RollbackTrans;
  end;//try
end;

تحياتي

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

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