تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ادخال درجات الطلاب لقاعدة بيانات اكسس .. مساعدة
#3
وعليكم السلام ورحمة الله وبركاته

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

مثلاً 
- طالب1 أدخلت درجاته عن شهر 10 
- طالب 2 أدخلت درجاته عن شهر 10
ثم أردت أن تدخل : 
- درجات الطالب 1 عن شهر 11
- درجات الطالب عن شهر 11
 
كيف سيعرف البرنامج هذه الدرجات لمن تكون وأي طالب ؟؟

على الأقل يجب أن يكون هناك ضمن الجدول حقل لتعريف السجل عن أي طالب هو.
مثلاً رقم الطالب(ID) أو اسم الطالب (Name)..

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


كتبسيط للأمر في مثالك :
قم بإضافة (ComboBox2)    للنافذة واجعلها من أجل رقم الطالب ..

في قم الأكود قم بإضافة الكود التالي (وضعه في أي مكان مناسب، في قسم المودل أو في قسم الفورم1، مو مشكلة) -- 
وهو كود من أجل التحقق من رقم الطالب موجود أم لا  :
كود :
   Function IsIDExist(Id As String) As Boolean
       Dim cn1 As OleDbConnection
       cn1 = New OleDbConnection
       cn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=../debug/testdb.mdb"
       cn1.Open()

       Dim cmd2 As New OleDbCommand(" select * from tbl_accounts Where ID = '" & Id & "'", cn1)
       Dim dt As New DataTable

       dt.Load(cmd2.ExecuteReader)
       If dt.Rows.Count = 1 Then
           Return True
       Else
           Return False
       End If

       cn1.Close()

   End Function


بالنسبة للأكواد الخاصة بالشهرين (Oct) - (Nov)  استبدلهما بالكود التالي :
كود :
Public Sub October()

   Dim Sql As String
   Dim cn1 As OleDbConnection
   cn1 = New OleDbConnection
   cn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=../debug/testdb.mdb"
   cn1.Open()

   Dim cmd2 As New OleDbCommand

   Dim Id2 As String = ComboBox2.Text
   Dim Oct2 As String = NumericUpDown1.Value
   If IsIDExist(ComboBox2.Text) = True Then
       Sql = "Update tbl_accounts set Oct='" & Oct2 & "', ID='" & Id2 & "' Where ID ='" & Id2 & "' "
   Else
       Sql = "INSERT INTO tbl_accounts (ID,Oct)Values('" & Id2 & "','" & Oct2 & "')"
   End If

   If ComboBox1.Text = "اكتوبر" Then
       DatabaseConnect()

       With cmd2
           .Connection = cn1
           .CommandText = Sql
           .Parameters.Clear()

           .ExecuteNonQuery()
           MsgBox("تم إضافة الدرجة بنجاح", MsgBoxStyle.Information, "تنبيه")
           NumericUpDown1.ResetText()
       End With
   End If
   cn1.Close()

End Sub

Public Sub November()

   Dim Sql As String
   Dim cn1 As OleDbConnection
   cn1 = New OleDbConnection
   cn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=../debug/testdb.mdb"
   cn1.Open()

   Dim cmd2 As New OleDbCommand

   Dim Id2 As String = ComboBox2.Text
   Dim Nov2 As String = NumericUpDown2.Value

   If IsIDExist(ComboBox2.Text) = True Then
       Sql = "Update tbl_accounts set Nov='" & Nov2 & "' Where ID ='" & Id2 & "' "
   Else
       Sql = "INSERT INTO tbl_accounts (ID,Nov)Values('" & Id2 & "','" & Nov2 & "')"
   End If

   If ComboBox1.Text = "نوفمبر" Then
       DatabaseConnect()

       With cmd2
           .Connection = cn1
           .CommandText = Sql
           .Parameters.Clear()

           .ExecuteNonQuery()
           MsgBox("تم إضافة الدرجة بنجاح", MsgBoxStyle.Information, "تنبيه")
           NumericUpDown2.ResetText()
       End With
   End If
   cn1.Close()
End Sub


جرب الكود على هاذين الشهرين، !!   هل نجح الأمر معك ؟؟

==========================================
لاحظ في كود أي شهر منهما :
- أولا نتحقق من وجود رقم الطالب من خلال الخاصية التي صنعناها في الكود الأول أعلاه، بالشطر التالي :
كود :
If IsIDExist(ComboBox2.Text) = True Then

وبحسب نتيجة الشرط تحقق أم لا نحدد طريقة جملة الاستعلام إما (Update)  أو  (Insert)..
وعليه تكون النتيجة..

هذا مختصر بسيط جداً عن هذه العملية ..

إن رأيت أنك استطعت أن تحققها كما شرحت، فأعلم أنك اقتربت كثيراً من الدرجة الأولى من تعلم قواعد البيانات..
وستعلم قواعد البيانات ليس قصير، لا أبالغ إن قلت لك هو أكثر من ألف درجة .. وإنك حتى الان لم تضع قدمك على الدرجة الأولى,,
يكفيك أن تتعلم القليل من الخطوات حتى تعرف كيف تتعامل معها بحسب حاجتك لها ..

ولكن نصيحة : لا تتعلم بالتجريب والأمثلة لأنك وقتها ستضيع الكثير  من وقتك بالتجريب وسؤال الغير كي يرشدوك للطريق الصحيح وهذا لن يكون متوفراً دائماً

بل أدخل دورة لتعلم أساسيات البرمجة وقواعد البيانات، 
فخلال شهرين أو ثلاثة ستكون أفضل من كثير ممن يدعون أنهم يعرفون عن البرمجة وقواعد البيانات
فالتعليم الأكاديمي  ضروري جداً لتدوس بخطوات ثابتة في هذا الطريقة ..

وهناك الكثير من القنوات المجانية على يوتيوب تعلمك البرمجة من الصفر ... 
منها أكاديمية حسونة، وأحمد النجار، و.. إلخ  .. وهناك الكثير من الكتب البرمجية المشروحة شرحاً مبسطاً ..
ولكن أنصحك بالتعلم بالصوت والصورة مع التطبيق لما تراه يوم بيوم ولحظة بلحظة ..
مع التكرار ستصبح أغلب ما تعلمته أساسياً في دماغك وستكتشف بالتجريب طرقاً لم تخطر على بال أحد من قبلك
فطرق الوصول للهدف كثيرة ولكن الأفضل بالتعلم بشكل منطقي وتسلسلي، ولا تطبق مبدأ (نضرب العجينة بالحيط، إذا لزقت فلزقت، وإذا ما لزقت فما لزقت)
التجريب بدون أساسيات طريق طويلة جداً جداً، فقد ينفد العمر ولا ترى نفسك أنك تعلمت سوى القليل،،
فما تتعلمه بطرق أكاديمية ومنطقية (خلال أشهر) يوفر عليك سنوات من المعاناة بالتجريب، ومشروع السنة بالتجريب ستستطيع وقتها أن تنجزه بشهر أو باسبوع.
=========
استثمر في وقتك، فهو أهم الاستثمارات التي ستمر عليك في حياتك ولن تعوض مرة أخرى، 
فالعمر مرة فلا تسرق سنينه بلحظات.. لاضاعت الفرصة ما يعوضها كثر الحسرات..
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: Tajaldeen , Tajaldeen , OLED , OLED , OLED , أبو خالد الشكري , MOSTAFA_GHALEB


الردود في هذا الموضوع
RE: ادخال درجات الطلاب لقاعدة بيانات اكسس .. مساعدة - بواسطة Taha Okla - 05-01-23, 05:24 PM


التنقل السريع :


يقوم بقرائة الموضوع: