وعليكم السلام ورحمة الله وبركاته
عند الاضافة على جدول ما في قاعدة بيانات :
- يجب أن يكون لديك أساس تبني عليه افتراضاتك التي تدخل بها البيانات.
- ذلك كي تعرف على أي أساس ستقوم بتعديل سجل طالب ما ..
مثلاً
- طالب1 أدخلت درجاته عن شهر 10
- طالب 2 أدخلت درجاته عن شهر 10
ثم أردت أن تدخل :
- درجات الطالب 1 عن شهر 11
- درجات الطالب عن شهر 11
كيف سيعرف البرنامج هذه الدرجات لمن تكون وأي طالب ؟؟
على الأقل يجب أن يكون هناك ضمن الجدول حقل لتعريف السجل عن أي طالب هو.
مثلاً رقم الطالب(ID) أو اسم الطالب (Name)..
فإذا ما أردت أن تدخل بيانات الطالب :
- أولا تحدد من هو الطالب بحسب طريقة تعاملك التي حددتها مع هذا الجدول من قاعدة البيانات إم عن طريقة اسمه أو رقمه.
- تبحث عن هذا الرقم في جدول الدرجات في قاعدة البيانات ، هل هو موجود ؟ أم لا ؟
- إذا كان غير موجود نعمل عملية إضافة(إدخال)..
- إذا كان موجود نعمل عملية تحديث للسجل لا أكثر.
كتبسيط للأمر في مثالك :
قم بإضافة (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)..
وعليه تكون النتيجة..
هذا مختصر بسيط جداً عن هذه العملية ..
إن رأيت أنك استطعت أن تحققها كما شرحت، فأعلم أنك اقتربت كثيراً من الدرجة الأولى من تعلم قواعد البيانات..
وستعلم قواعد البيانات ليس قصير، لا أبالغ إن قلت لك هو أكثر من ألف درجة .. وإنك حتى الان لم تضع قدمك على الدرجة الأولى,,
يكفيك أن تتعلم القليل من الخطوات حتى تعرف كيف تتعامل معها بحسب حاجتك لها ..
ولكن نصيحة : لا تتعلم بالتجريب والأمثلة لأنك وقتها ستضيع الكثير من وقتك بالتجريب وسؤال الغير كي يرشدوك للطريق الصحيح وهذا لن يكون متوفراً دائماً
بل أدخل دورة لتعلم أساسيات البرمجة وقواعد البيانات،
فخلال شهرين أو ثلاثة ستكون أفضل من كثير ممن يدعون أنهم يعرفون عن البرمجة وقواعد البيانات
فالتعليم الأكاديمي ضروري جداً لتدوس بخطوات ثابتة في هذا الطريقة ..
وهناك الكثير من القنوات المجانية على يوتيوب تعلمك البرمجة من الصفر ...
منها أكاديمية حسونة، وأحمد النجار، و.. إلخ .. وهناك الكثير من الكتب البرمجية المشروحة شرحاً مبسطاً ..
ولكن أنصحك بالتعلم بالصوت والصورة مع التطبيق لما تراه يوم بيوم ولحظة بلحظة ..
مع التكرار ستصبح أغلب ما تعلمته أساسياً في دماغك وستكتشف بالتجريب طرقاً لم تخطر على بال أحد من قبلك
فطرق الوصول للهدف كثيرة ولكن الأفضل بالتعلم بشكل منطقي وتسلسلي، ولا تطبق مبدأ (نضرب العجينة بالحيط، إذا لزقت فلزقت، وإذا ما لزقت فما لزقت)
التجريب بدون أساسيات طريق طويلة جداً جداً، فقد ينفد العمر ولا ترى نفسك أنك تعلمت سوى القليل،،
فما تتعلمه بطرق أكاديمية ومنطقية (خلال أشهر) يوفر عليك سنوات من المعاناة بالتجريب، ومشروع السنة بالتجريب ستستطيع وقتها أن تنجزه بشهر أو باسبوع.
=========
استثمر في وقتك، فهو أهم الاستثمارات التي ستمر عليك في حياتك ولن تعوض مرة أخرى،
فالعمر مرة فلا تسرق سنينه بلحظات.. لاضاعت الفرصة ما يعوضها كثر الحسرات..