• 0

كيف أنشئ هذه العلاقة بين جدولي إكسس في C#؟

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

أريد شرح كيفية إنشاء هذه العلاقة بين هذه الجداول:

الجدول الأول يوجد به عدد من الطلبة يتكون من اسم الطالب والدرجة العلمية التي حصل عليها.

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

المفروض أن كل طالب يفتح له الجدول الثاني حسب درجته العلمية.

مثال:

لو الطالب (س) درجته النهائية (300) يقوم البرنامج بفتح له كل الخيارات؟

لو الطالب (ص) درجته مثلا ( 270) يقوم البرنامج بفتح المدارس التي تشمل هذه الدرجة وما دونها.

ملاحظة:

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

مثال على الكود

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="_1.WebForm1" %>

<!DOCTYPE html>

<title></title>

          

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="Ta3lem" DataValueField="Ta3lemID" style="text-align: center"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" DeleteCommand="DELETE FROM [Table] WHERE [Id] = @Id" InsertCommand="INSERT INTO [Table] ([Id], [Ta3lem], [Ta3lemID]) VALUES (@Id, @Ta3lem, @Ta3lemID)" SelectCommand="SELECT * FROM [Table]" UpdateCommand="UPDATE [Table] SET [Ta3lem] = @Ta3lem, [Ta3lemID] = @Ta3lemID WHERE [Id] = @Id"> <DeleteParameters> <asp:Parameter Name="Id" Type="Int32" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="Id" Type="Int32" /> <asp:Parameter Name="Ta3lem" Type="String" /> <asp:Parameter Name="Ta3lemID" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="Ta3lem" Type="String" /> <asp:Parameter Name="Ta3lemID" Type="String" /> <asp:Parameter Name="Id" Type="Int32" /> </UpdateParameters> </asp:SqlDataSource> <br /> </div style ="rtl"> <asp:TextBox ID="TextBoxR1" runat="server"></asp:TextBox> <asp:TextBox ID="TextBoxR2" runat="server"></asp:TextBox> <asp:TextBox ID="TextBoxR3" runat="server"></asp:TextBox> </form>

الكود الخلفي

 Public Class WebForm1 Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load, chk_ot.CheckedChanged, chk_ot.DataBinding End Sub Protected Sub DropDownList1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DropDownList1.TextChanged, DropDownList1.SelectedIndexChanged TextBoxR1.Text = DropDownList1.SelectedItem.Text TextBoxR2.Text = DropDownList1.SelectedItem.Text TextBoxR3.Text = DropDownList1.SelectedItem.Text End Sub

End Class

البرنامج مصمم على اكسيسس والربط مع تطبيق وِب من نوع سى شارب فيجوال ستديو 2012

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

أولًا لا أنصح مطلقًا باستخدام Access لأنّها غير مصمّمة أبدًا لهذه الغاية، وستحصل عاجلًا أم آجلًا على الكثير من المشاكل. استخدم بدلًا منها قواعد بيانات SQL Server

على العموم ستحتاج برأيي إلى ثلاث جداول:

1- جدول Students يحتوي على بيانات الطلاب ويضم ثلاثة حقول:

  • StudentId معرّف الطالب (مفتاح رئيسي)
  • Name اسم الطالب
  • Degree الدرجة العلمية للطالب.

2- جدول Schools يحتوي على بيانات المدارس ويضم ثلاثة حقول:

  • SchoolId معرّف المدرسة (مفتاح رئيسي)
  • Name اسم المدرسة.
  • MinDegree الدرجة الدنيا للقبول في المدرسة.

3- جدول StudentSchools وهو جدول الربط بين الطلاب والمدارس ويضم حقلين:

  • StudentId معرف الطالب (مفتاح رئيسي)
  • SchoolId معرّف المدرسة (مفتاح رئيسي)

ومن الممكن إنشاء مفتاح ثانوي foreign key بين الجدول الثالث وبين كل من الجدولين الأوّل والثاني وفق StudentId و SchoolId على الترتيب.

بالنسبة إلى أنّ كل طالب يمكن ان يكون له 3 رغبات فقط، فهذا أمر يتم إنجازه من خلال الشيفرة البرمجية.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

نعم الأفضل أن تقوم بذلك باستخدام SQL Server.

بالنسبة لمنع أكثر من 3 رغبات، فستحتاج إلى القيام بذلك بشكل برمجي، ويكون ذلك على الشكل التالي:

1- قبل إضافة أي مُدخل (سجل) إلى الجدول StudentSchools والذي يمثّل رغبات الطلاب بالنسبة للمدراس، عليك أن تحصي عدد المدخلات الموجودة ضمن هذا الجدول لطالب محُدّد.

2- إذا كانت عدد المدخلات (الرغبات) لهذا الطالب أقل من 3 عندها فيمكنك إضافة مُدخل (رغبة) جديد. وإلّا فترفض تنفيذ هذه العمليّة.

يمكنك إحصاء عدد المدخلات (الرغبات) الحالية لطالب محدد ضمن الجدول StudentSchools باستعلام SQL بسيط على الشكل التالي:

SELECT COUNT(StudentId) FROM StudentSchools WHERE StudentId = @student_id

حيث @student_id هو معرّف الطالب المراد البحث عنه

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ On 6/26/2016 at 12:16 قال حسام برهان:

أولًا لا أنصح مطلقًا باستخدام Access لأنّها غير مصمّمة أبدًا لهذه الغاية، وستحصل عاجلًا أم آجلًا على الكثير من المشاكل. استخدم بدلًا منها قواعد بيانات SQL Server

على العموم ستحتاج برأيي إلى ثلاث جداول:

1- جدول Students يحتوي على بيانات الطلاب ويضم ثلاثة حقول:

  • StudentId معرّف الطالب (مفتاح رئيسي)
  • Name اسم الطالب
  • Degree الدرجة العلمية للطالب.

2- جدول Schools يحتوي على بيانات المدارس ويضم ثلاثة حقول:

  • SchoolId معرّف المدرسة (مفتاح رئيسي)
  • Name اسم المدرسة.
  • MinDegree الدرجة الدنيا للقبول في المدرسة.

3- جدول StudentSchools وهو جدول الربط بين الطلاب والمدارس ويضم حقلين:

  • StudentId معرف الطالب (مفتاح رئيسي)
  • SchoolId معرّف المدرسة (مفتاح رئيسي)

ومن الممكن إنشاء مفتاح ثانوي foreign key بين الجدول الثالث وبين كل من الجدولين الأوّل والثاني وفق StudentId و SchoolId على الترتيب.

بالنسبة إلى أنّ كل طالب يمكن ان يكون له 3 رغبات فقط، فهذا أمر يتم إنجازه من خلال الشيفرة البرمجية.

يعنى الافضل حضرتك انى احول الاكسيسس الى سيكوال سيرفير

ويعد كده انفذ الجداول دى على سيكوال سيرفير

طب ممكن حضرتك تقولى اذاى اقدر امنع الطالب من اختيار رغبات متكررة

وجزاك الله كل خير على هذه المعلومة القيمة 

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن