كود :
Public Class Form1
Dim ds As New DataSet ' نعرف متغير من نوع داتاست
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' هذا حدث عند فتح الفورم
' نقوم بربط الداتاقريد و حقول النص بقاعدة البيانات
Call LoadData() 'LoadData نقوم بأستدعاء إجراء قمت بعمله بالأسفل وسميته
Dim a As String = check()
If a <> "" Then
MsgBox(a)
End If
End Sub
Shared Function check() As String
Dim dt As New DataTable
Dim ret As Integer = New OleDb.OleDbDataAdapter("SELECT T_Name, DateDiff ('d', Now(), data_end) As days FROM T_Tel WHERE DateDiff ('d', Now(), data_end) < 30", con).Fill(dt)
Dim sb As New System.Text.StringBuilder
If ret > 0 Then
sb.AppendLine("الاسماء والايام المتبقية")
For Each r As DataRow In dt.Rows
sb.AppendLine(r("T_Name") & " = " & r("days"))
Next
End If
Return sb.ToString
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Button1.Enabled = False ' يقفل زر الإضافة حتى لا يتم ضغطه مره أخرى
Button2.Enabled = True ' يفتح زر الحفظ
Button3.Enabled = False ' يقفل زر التعديل لانه الأن يتم عملية الإضافة
Button4.Enabled = False ' يقفل زر الحذف لانه الأن يتم عملية الحذف
ds.Clear() ' أمر تفريغ داتا ست حتى تكون مستعدة لأستقبال البيانات الأتية من قاعدة البيانات
DataGridView1.DataSource = Nothing ' فرغ إيضا داتاقريد
' ونفرغ إيضا جميع حقول النص من الربط
TextBox1.DataBindings.Clear()
TextBox2.DataBindings.Clear()
TextBox3.DataBindings.Clear()
TextBox4.DataBindings.Clear()
TextBox5.DataBindings.Clear()
TextBox7.DataBindings.Clear()
'TextBox8.DataBindings.Clear()
Label7.DataBindings.Clear() ' ونفرغ إيضا الليبل حق الرقم التسلسلي
TextBox1.Select() ' هذا الكود تعني ضع المؤشر على التكس رقم 1
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' هذا كود الإضافة
' في البداية نقوم بتعريف متغير من نوع أوامر قواعد البيانات ومن ثم نسرد لها كود الأمر بتعريفه انه سيقوم بعملية إضافة في جدول تي تليفون في الحقول التالية والقيم علامات استفهام بعدد الحقول المراد إضافة فيها
Dim insertinto As New OleDb.OleDbCommand("insert into T_Tel (T_Name,T_Tel1,T_Tel2,T_EMail,T_Address,data,data_end) values (?,?,?,?,?,?,?)", con)
insertinto.Parameters.AddWithValue("@T_Name", OleDb.OleDbType.VarChar).Value = TextBox1.Text ' الأن نوجه البرنامج بأخذ البيانات الموجوده في الحقل رقم 1 ويضيفها في تي نيم
insertinto.Parameters.AddWithValue("@T_Tel1", OleDb.OleDbType.VarChar).Value = TextBox2.Text
insertinto.Parameters.AddWithValue("@T_Tel2", OleDb.OleDbType.VarChar).Value = TextBox3.Text
insertinto.Parameters.AddWithValue("@T_EMail", OleDb.OleDbType.VarChar).Value = TextBox4.Text
insertinto.Parameters.AddWithValue("@T_Address", OleDb.OleDbType.VarChar).Value = TextBox5.Text
insertinto.Parameters.AddWithValue("@data", OleDb.OleDbType.VarChar).Value = TextBox7.Text
'insertinto.Parameters.AddWithValue("@data_end", OleDb.OleDbType.VarChar).Value = TextBox8.Text
insertinto.Parameters.AddWithValue("@data_end", OleDb.OleDbType.VarChar).Value = DateTimePicker1.Value.Date
'ID نلاحظ هنا اننا لم نضيف بيانات في حقل
' والسبب ان في قاعدة البيانات نوعه ترقيم تلقائي
If con.State = ConnectionState.Closed Then con.Open() ' هذا الكود هو فحص هل قاعدة البيانات مغلقه ام مفتوحة إذا كان مغلقه يقوم بفتححها حتى يتمكن من الإضافة
insertinto.ExecuteNonQuery() ' يقوم الان بتنفيذ الأوامر السابقه وتطبيقها
con.Close() ' يقوم بغلق قاعدة البيانات
MsgBox("تم الإضافة بنجاح", MsgBoxStyle.Information, "نجاح") ' رساله تفيد بنجاح عملية الإضافة
' يقوم بإرجاع كل شيء كما كان من قفل وفتح الأزارير
Button1.Enabled = True
Button2.Enabled = False
Button3.Enabled = True
Button4.Enabled = True
' سنقوم بمنادات إجراء عرض البيانات حتى يعرض لي البيانات بعد التحديث
Call LoadData()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
' هذا كود التعديل
' في البداية نقوم بسؤال المستخدم هل فعلا يريد تعديل على هذا السجل إذا ضغط نعم ينتقل للسطر التالي خلاف هذا يخرج من الإجراء بالكامل ولا ينفذ إي شيء
If MsgBox("هل تريد بتأكيد حفظ التعديل على السجل الحالي؟", MsgBoxStyle.YesNo, "تنبيه") = MsgBoxResult.No Then Exit Sub
' نقوم بتعريف متغير من نوع أوامر قواعد البيانات ومن ثم نسرد لها كود الأمر بتعريفه انه سيقوم بعملية التعديل في جدول تي تليفون في الحقول التالية ونضيف اسماء الحقول وبجانب كل اسم حقل نضيف نفس اسم الحقل لاكن يسبقه بعلامة مساواه و علامت الآت
'وهي تعني بشرط تحقق مايلي ومن ثم نكتب حقل اسم الحقل الإيدي بمقارنته مع ليبل 7 الذي يحتوي على إي دي where ملاحظة سنزيد كلمة
Dim EditUpdate As New OleDb.OleDbCommand("update T_Tel set T_Name=@T_Name,T_Tel1=@T_Tel1,T_Tel2=@T_Tel2,T_EMail=@T_EMail,T_Address=@T_Address,data=@data,data_end=@data_end where ID=" & Val(Label7.Text) & "", con)
EditUpdate.Parameters.AddWithValue("@T_Name", OleDb.OleDbType.VarChar).Value = TextBox1.Text ' الأن نوجه البرنامج بأخذ البيانات الموجوده في الحقل رقم 1 ويضيفها في تي نيم مثل ما فعلنا في الإضافة
EditUpdate.Parameters.AddWithValue("@T_Tel1", OleDb.OleDbType.VarChar).Value = TextBox2.Text
EditUpdate.Parameters.AddWithValue("@T_Tel2", OleDb.OleDbType.VarChar).Value = TextBox3.Text
EditUpdate.Parameters.AddWithValue("@T_EMail", OleDb.OleDbType.VarChar).Value = TextBox4.Text
EditUpdate.Parameters.AddWithValue("@T_Address", OleDb.OleDbType.VarChar).Value = TextBox5.Text
EditUpdate.Parameters.AddWithValue("@data", OleDb.OleDbType.VarChar).Value = TextBox7.Text
'EditUpdate.Parameters.AddWithValue("@data_end", OleDb.OleDbType.VarChar).Value = TextBox8.Text
EditUpdate.Parameters.AddWithValue("@data_end", OleDb.OleDbType.VarChar).Value = DateTimePicker1.Value.Date
If con.State = ConnectionState.Closed Then con.Open() ' هذا الكود هو فحص هل قاعدة البيانات مغلقه ام مفتوحة إذا كان مغلقه يقوم بفتححها حتى يتمكن من التعديل
EditUpdate.ExecuteNonQuery() ' يقوم الان بتنفيذ الأوامر السابقه وتطبيقها
con.Close() ' يقوم بغلق قاعدة البيانات
MsgBox("تم التعديل بنجاح", MsgBoxStyle.Information, "نجاح") ' رساله تفيد بنجاح عملية التعديل
' سنقوم بمنادات إجراء عرض البيانات حتى يعرض لي البيانات بعد التحديث
Call LoadData()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
' هذا كود الحذف
' في البداية نقوم بسؤال المستخدم هل فعلا يريد حذف هذا السجل إذا ضغط نعم ينتقل للسطر التالي خلاف هذا يخرج من الإجراء بالكامل ولا ينفذ إي شيء
If MsgBox("هل تريد بالتأكيد حذف هذا السجل ؟", MsgBoxStyle.YesNo + MsgBoxStyle.Information + MsgBoxStyle.DefaultButton2, "تنبيه") = MsgBoxResult.No Then Exit Sub
' نقوم بتعريف متغير من نوع أوامر قواعد البيانات ونقوم بإدخال له أمر حذف من جدول تي تيلفون بشرط ان يكون رقم الإيدي مطابق للإيديه الظاهر في ليبيل 7
Dim del As New OleDb.OleDbCommand("delete from T_Tel where ID=" & Val(Label7.Text) & "", con)
If con.State = ConnectionState.Closed Then con.Open() ' هذا الكود هو فحص هل قاعدة البيانات مغلقه ام مفتوحة إذا كان مغلقه يقوم بفتححها حتى يتمكن من الحذف
del.ExecuteNonQuery() ' يقوم الان بتنفيذ الأوامر السابقه وتطبيقها
con.Close() ' يقوم بغلق قاعدة البيانات
MsgBox("تم الحذف بنجاح", MsgBoxStyle.Information, "نجاح") ' رساله تفيد بنجاح عملية الحذف
' سنقوم بمنادات إجراء عرض البيانات حتى يعرض لي البيانات بعد التحديث
Call LoadData()
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Me.Close()
End Sub
Private Sub TextBox6_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox6.TextChanged
' كود اثناء الكتابه في خانة البحث
If TextBox6.Text.Trim = "*" Then ' إذا تم وضع نجمه يقوم بإجراء مايلي
Call LoadData() ' نداء الإجراء الذي يقوم بالاتصال الكامل لجميع البيانات
Exit Sub ' يخرج من الإجراء
Else ' خلاف هذا
ds.Clear() ' يفرغ داتا ست
DataGridView1.DataSource = Nothing ' يفرغ داتاقريد
' بعد اسم الجدول وهذا يعني انه يوجد شرط يجب تحققه where نقوم بتعريف متغير من نوع داتا ادابتر لقي يتم إضافة كود الفلتره هناك ولاكن نلاحظ هنا اننا ضفنا كلمة
' وهذا الامر يعني يقوم بمقارنته الكلمة او الحروف التي تشابه ولا يشرط ان تكتب الاسم كامل like ونلاحظ ان بعد ما قمنا بوضع اسم الحقل الذي نريد الشرط بمساواته لم نكتب علامة المساواه بل كتبنا كلمة
' ومن ثم نلاحظ وجود علامة بالمئة إي ابحث في بداية الكلمة وإيضا توجد علامة بالمئة في النهاية اي ابحث إيضا في نهاية الكلمه
' اما إذا وضعت علامة بالمئة في البداية فقط وكتب المستخدم حرف م سيظهر جميع السجلات التي تبدأ بحرف ميم فقط
' اما في هذا الحال سيظهر جميع السجلات التي تحتوي حرف ميم في البداية وسجلات التي تحتوي على حرف ميم في النهاية وسجلات التي تحتوي حرف ميم في الوسط
' اما علامة ( ' ) التي سبقت علمتي بالميئة هي دلاله ان الحقل في قاعدة البيانات من نوع نصي وليس رقمي إضا ما كتبناها سيحدث خطأ ولن ينفذ الكود لان الحقل نصي يجي وضعها
Dim da As New OleDb.OleDbDataAdapter("select ID,T_Name,T_Tel1,T_Tel2,T_EMail,T_Address,data,data_end from T_Tel where T_Name like '%" & TextBox6.Text & "%' ", con)
da.Fill(ds, "T_Tel") ' نقوم ملئ النتائج في داتاست
DataGridView1.DataSource = ds ' ثم ننقل البيانات من داتا ست إلى داتاقريد لعرضها في داتاقريد
DataGridView1.DataMember = "T_Tel" ' نوجه له اسم الجدول
End If
End Sub
' هذا الإجراء قمت بعملة لانه يحتوي على أكواد سأستعملها في أكثر من مكان حتى لا أكرر الكود قمت بوضعه ضمن إجراء وسأٌوم بمناداته كل مره أريده
' وهو إجراء عرض البيانات في داتاقريد وفي حقول النص
Sub LoadData()
ds.Clear() ' أمر تفريغ داتا ست حتى تكون مستعدة لأستقبال البيانات الأتية من قاعدة البيانات
DataGridView1.DataSource = Nothing ' فرغ إيضا داتاقريد
' ونفرغ إيضا جميع حقول النص من الربط
TextBox1.DataBindings.Clear()
TextBox2.DataBindings.Clear()
TextBox3.DataBindings.Clear()
TextBox4.DataBindings.Clear()
TextBox5.DataBindings.Clear()
TextBox7.DataBindings.Clear()
'TextBox8.DataBindings.Clear()
DateTimePicker1.DataBindings.Clear()
Label7.DataBindings.Clear() ' ونفرغ إيضا الليبل حق الرقم التسلسلي
' نعرف متغير من نوع داتا أدابتر حتى نقوم بعملية استعلام عن البيانات في قاعدة البيانات
Dim da As New OleDb.OleDbDataAdapter("select ID,T_Name,T_Tel1,T_Tel2,T_EMail,T_Address,data,data_end from T_Tel", con)
da.Fill(ds, "T_Tel") ' نقوم ملئ النتائج في داتاست
DataGridView1.DataSource = ds ' ثم ننقل البيانات من داتا ست إلى داتاقريد لعرضها في داتاقريد
DataGridView1.DataMember = "T_Tel" ' نوجه له اسم الجدول
' نربطها إيضا في حقول النص حتى يملي الحقول تلقائي عند تحديد عنصر من داتا قريد
Label7.DataBindings.Add("text", ds, "T_Tel.ID")
TextBox1.DataBindings.Add("text", ds, "T_Tel.T_Name")
TextBox2.DataBindings.Add("text", ds, "T_Tel.T_Tel1")
TextBox3.DataBindings.Add("text", ds, "T_Tel.T_Tel2")
TextBox4.DataBindings.Add("text", ds, "T_Tel.T_EMail")
TextBox5.DataBindings.Add("text", ds, "T_Tel.T_Address")
TextBox7.DataBindings.Add("text", ds, "T_Tel.data")
'TextBox8.DataBindings.Add("text", ds, "T_Tel.data_end")
DateTimePicker1.DataBindings.Add("value", ds, "T_Tel.data_end")
End Sub
'Public Sub New()
' ' This call is required by the designer.
' InitializeComponent()
' ' Add any initialization after the InitializeComponent() call.
'End Sub
End Class