delphi4arab منتديات دلفي للعرب
كيف أقوم بإدخال معلومات في جدول من نوع N,N - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف أقوم بإدخال معلومات في جدول من نوع N,N (/showthread.php?tid=10954)

الصفحات: 1 2 3


كيف أقوم بإدخال معلومات في جدول من نوع N,N - ALG2009 - 12-07-2020

السلام عليكم
هناك جدولين جدول التلميذ وجدول الدروس وقمت برط الجدولين مع بعض  في قاعدة البيانات حيث التلميد يدرس أكثر من درس والدرس يدرسه أكثر من تلميذ حيث كانت العلاقة مننوع n,n فتم إضافة جدول ثالث لتكون لتكون العلاقة 1,n 
المشكل أردت ربط الدروس مع التلميذ لإظهارها بالفاست ريبورت لم أستطع
كيف يمكن إدخال الدروس لكل طالب وإظهارها في الفاست ريبورت؟ احترت كيف يمكن إدخال الدروس لكل طالب مع العلم  أني أضفت جدول ثالث وضعت به معرف التلميذ  ومعرف الدروس Huh

[صورة: titled.jpg]


RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - ALG2009 - 13-07-2020

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


RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - larbiparadox - 13-07-2020

وعليك السلام

* لا أرى ضرورة للجدول الثالث الرابط بين الجدولين ، إضافة حقل التلميذ في جدول الدروس ، رقم 1 هو جدول التلاميذ و رقم 2 هو جدول الدروس
في خصائص الجدول رقم 2   FDTable2 في MasterSource نعطيه إسم DataSource الذي يتحكم في الجدول الثاني و نعطيه إسم الحقل المشترك ، أي يظهر فقط دروس التلميذ الذي انت عنده وعند حفظ الدروس يأخذ الحقل قيمته من جدول الرئيسي

[صورة: 204445319.png]


* أرى أنك نسيت Trigger فهو يقوم بزيادة القيمة عند إضافة الحقل و Generator يخزن أخر قيمة للحقل عند الاضافة يزيد عليها

[صورة: 544879631.png]


RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - sofiane201 - 13-07-2020

أخ العربي، العلاقة n-n صحيحة، والذي قمت به يجعل لكل درس تلميذ واحد فقط.
أخ alg2009 يمكنك انشاء lookup field في الجدول الثالث وتظهر بها field التي تريدها من الجدولين الاخرين.


RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - larbiparadox - 13-07-2020

(13-07-2020, 08:11 PM)sofiane201 كتب : أخ العربي، العلاقة n-n صحيحة، والذي قمت به يجعل لكل درس تلميذ واحد فقط.
أخ alg2009 يمكنك انشاء lookup field في الجدول الثالث وتظهر بها field التي تريدها من الجدولين الاخرين.

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

_ في الحالة التي أتكلم عليها ، مفتاح الدرس ID_LESS يكون ثابت لا يتغير إلا بتغيير الدرس ، يجب أن يرقم يدويا هنا يجب التعديل على قاعدة البيانات يجب أن لا يكون تلقائيا


_ لو أردت معرفة التلاميذ الذين يدرسون درس معين ، عن طريق لغة sql الفلترة بواسطة رقم الدرس ID_LESS و الجمع بين القاعدتين عن طريق join بواسطة رقم التلميذ ID_STUDENT

[صورة: 392857383.png]

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


RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - sofiane201 - 13-07-2020

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


RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - ALG2009 - 14-07-2020

بارك الله فيك أخي وأستاذي العربي

هل هذا يعني التعامل دائما مع العلاقة كثير لكثير بهذه الطريقة دون إضافة جدول آخر؟

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


RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - larbiparadox - 14-07-2020

(13-07-2020, 11:52 PM)sofiane201 كتب : لا يمكنني النظر في ملف قاعدة البيانات لأني بالهاتف حاليا، هلا وضعت هنا sql الخاص بجدوليك حتى يتضح جوابك

حتى أنا جاوبت بدون تركيز ، لأني فكرت على أنا جدول الدروس تابع للتلميذ و قمت بتغييره و إضافة له رقم التلميذ ، وهذا خطأ

وفكرت بأن يكون الجمع بين الجدولين كتالي في حالة إضافة حقل التلميذ للدروس
PHP كود :
SELECT  STUDENT.ID_STUDENT, STUDENT.NAME
FROM STUDENT
LEFT JOIN LESSONS 
ON LESSONS
.ID_STUDENT = STUDENT.ID_STUDENT
where  LESSONS
.ID_LESS = 1 

لك الحق الأخ sofiane201 ، سأعيد النظر في قاعدة البيانات و الربط

بالنسبة للأخ  ALG2009 العلاقة صحيحة فأنتظر الإجابة


RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - larbiparadox - 15-07-2020

بالنسبة لـ : ما اسم البرنامج الذي تتعمل به مع قاعدة البيانات

البرنامج هو : Firebird Maestro

* تم اضافة Trigger و هذا لترقيم الالي ، وهذا ليس ضروري يمكنك حجزها يدويا
[صورة: 891448635.png]


* تم ربط المكونات مع كل جدول حسب الارقام
[صورة: 748678573.png]

- بالنسبة لـ DBLookupComboBox1 الخاصة بقائمة الدروس ، مصدر قائمة الدروس من جدول رقم 4 ، أما الحفظ في الجدول رقم 3

- بالنسبة للجدول رقم 3 كما يظهر في خصائص FDTable2 ربطناه مع جدول الاول كإبن للجدول رقم 1  FDTable1، إسم الحقل المتحكم ID_STUDENT

- العملية رقم 5 عن طريق SQL جمعت بين الجداول الثلاث وفق شرط التصفية للدرس
PHP كود :
     with FDQuery1 do
    begin

    sql
.clear;
    sql.add('SELECT  STUDENT.ID_STUDENT, STUDENT.NAME ');
    sql.add('FROM STUDENT ');
    sql.add('JOIN STUDLESSON ');
    sql.add('ON STUDLESSON.ID_STUDENT = STUDENT.ID_STUDENT ');
    sql.add('JOIN LESSONS ');
    sql.add('ON LESSONS.ID_LESS = STUDLESSON.ID_LESS ');
    sql.add('where  LESSONS.ID_LESS = :ID_LESS');

    ParamByName('ID_LESS').asString:=   FDTable4.FieldByName('ID_LESS').AsString;



     Open ; 

[صورة: 584504851.png]

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

كإضافة بالنسبة للعملية رقم 5 ، إظهار التلاميذ حسب الدرس ، يمكننا الجمع بين جدولين فقط ، لكن العملية السابقة صحيحة

تكون كأتي
PHP كود :
     with FDQuery1 do
    begin

    sql
.clear;
    sql.add('SELECT  STUDENT.ID_STUDENT, STUDENT.NAME ');
    sql.add('FROM STUDENT ');
    sql.add('JOIN STUDLESSON ');
    sql.add('ON STUDLESSON.ID_STUDENT = STUDENT.ID_STUDENT ');
    sql.add('where  STUDLESSON.ID_LESS = :ID_LESS');

    ParamByName('ID_LESS').asString:=   FDTable4.FieldByName('ID_LESS').AsString;



     Open ;


    end; 



RE: كيف أقوم بإدخال معلومات في جدول من نوع N,N - ALG2009 - 16-07-2020

لكن مازال هناك مشكل وهو عند إضافة تلميذ جدديد وإختيار من الكومبوبكس إسم الدرس والضغط على حفظ يضاف التلميذ فقط دون الدرس الذي تم إختياره من الكومبوبوكس
حيث لو تم الضغط على التلميذ في الديبيقريد ثم الضغط على إضافة لإضافة تلميذ سيتم إضافة الدرس المحدد في الكمبوبوكس للتلميذ الذي الذي تم إختياره
هناك خطب ما
لماذا عند الضغط على إضافة تلميذ جديد وإختيار الدرس في الكمبوبوكس والضغط على حفظ لا يتم حفظ الدرس أيضا؟