اذهب إلى المحتوى

السؤال

نشر

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

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

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

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

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

مثال:

لو الطالب (س) درجته النهائية (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

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

Recommended Posts

  • 1
نشر

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

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

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

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

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

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

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

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

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

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

  • 1
نشر

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

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

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

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

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

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

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

  • 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 رغبات فقط، فهذا أمر يتم إنجازه من خلال الشيفرة البرمجية.

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

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

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

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

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...